Skip to content

Commit

Permalink
add graph aperçu des données + coalesce() questions remaniement enquete
Browse files Browse the repository at this point in the history
  • Loading branch information
DianeThy committed Oct 14, 2024
1 parent e284db1 commit 9b0f510
Show file tree
Hide file tree
Showing 2 changed files with 482 additions and 317 deletions.
241 changes: 200 additions & 41 deletions Questionnaire_effets_commerce/Questionnaire_effets_commerce.Rmd
Original file line number Diff line number Diff line change
Expand Up @@ -109,8 +109,6 @@ codes_postaux_dg <- read_csv("data/codes_postaux_datagouv.csv") |>
filter(population.x == population.y | is.na(population.x) | is.na(population.y)) |>
mutate(population = coalesce(population.x, population.y)) |>
select(-c(population.x, population.y))
a <- n_distinct(raw_data$`Quel est le nom de votre commerce ?`)
```

Diffusée à partir du 4 avril 2024, l'enquête sur les effets du commerce de proximité vise à rendre visible l'impact de l'activité commerciale sur le quartier, la ville et ses habitants.
Expand All @@ -124,17 +122,55 @@ Composée de près de 40 questions, l'enquête se divise en 6 sections reprenant
- Environnement ;
- Espace public.

Au `r format(Sys.time(), '%d %B %Y')`, `r a` réponses uniques ont été récoltées.


## Répartition de l'échantillon{.tabset}

```{r}
# Nom des colonnes
noms_cols <- names(raw_data) |> as.data.frame()
# Nettoyage / mise en qualité / création de nouvelles variables
data <- raw_data |>
# merge des colonnes "Deleted question" après remaniement questionnaire
mutate(`Quel est le nom de votre commerce ?` = coalesce(`Quel est le nom de votre commerce ?`,
`Deleted question (b8Ary)`),
`Êtes-vous indépendant ?` = coalesce(`Êtes-vous indépendant ?`,
`Deleted question (cHcLK)`),
`Où vendez-vous vos produits / services ?` = coalesce(`Où vendez-vous vos produits / services ?`,
`Deleted question (3A8pT)`),
`Pouvez-vous préciser, dans quel(s) lieu(x) intervenez-vous ?(Plusieurs réponses sont possibles)` = coalesce(`Pouvez-vous préciser, dans quel(s) lieu(x) intervenez-vous ?(Plusieurs réponses sont possibles)`,
`Deleted question (od4PG)`),
`Quelle est l'adresse de votre commerce ?` = coalesce(`Quelle est l'adresse de votre commerce ?`,
`Deleted question (h8Wcm)`),
`Dans quelle ville intervenez-vous le plus régulièrement ? (Renseigner le code postal)` = coalesce(`Dans quelle ville intervenez-vous le plus régulièrement ? (Renseigner le code postal)`, `Deleted question (vsd3y)`),
`Dans quelle ville travaillez-vous le plus régulièrement ? (Renseigner le code postal)` = coalesce(`Dans quelle ville travaillez-vous le plus régulièrement ? (Renseigner le code postal)`, `Deleted question (maw96)`),
`Quelle est la catégorie de votre commerce ?` = coalesce(`Quelle est la catégorie de votre commerce ?`,
`Deleted question (sCgQH)`),
`Pouvez vous préciser ? (5)` = coalesce(`Pouvez vous préciser ? (5)`,
`Deleted question (154HD)`),
`Pouvez vous préciser ? (6)` = coalesce(`Pouvez vous préciser ? (6)`,
`Deleted question (fCAjR)`),
`Pouvez vous préciser ? (7)` = coalesce(`Pouvez vous préciser ? (7)`,
`Deleted question (jwX3U)`),
`Pouvez vous préciser ? (9)` = coalesce(`Pouvez vous préciser ? (9)`,
`Deleted question (mVDFV)`),
`Pouvez vous préciser ? (4)` = coalesce(`Pouvez vous préciser ? (4)`,
`Deleted question (oU2dg)`),
`Pouvez vous préciser ? (1)` = coalesce(`Pouvez vous préciser ? (1)`,
`Deleted question (bmLVA)`),
`Pouvez vous préciser ?` = coalesce(`Pouvez vous préciser ?`,
`Deleted question (nwx3a)`),
#`Pouvez vous préciser ? (8)` = coalesce(`Pouvez vous préciser ? (8)`,
#`Deleted question ()`), #commerces et services de véhicules automobilies
`Pouvez vous préciser ? (3)` = coalesce(`Pouvez vous préciser ? (3)`,
`Deleted question (jUET5)`),
`Pouvez vous préciser ? (2)` = coalesce(`Pouvez vous préciser ? (2)`,
`Deleted question (ddK2v)`),
`Que propose votre commerce ? (Plusieurs réponses sont possibles)` = coalesce(`Que propose votre commerce ? (Plusieurs réponses sont possibles)`,
`Deleted question (3kHae)`),
`Travaillez-vous seul ?` = coalesce(`Travaillez-vous seul ?`,
`Deleted question (8AAv4)`),
`Êtes-vous en contact direct avec des clients ?` = coalesce(`Êtes-vous en contact direct avec des clients ?`,
`Deleted question (8cLRj)`),
`Hors période de fêtes, quelle est la fréquentation moyenne de votre commerce par jour ? (en nombre de personnes)` = coalesce(`Hors période de fêtes, quelle est la fréquentation moyenne de votre commerce par jour ? (en nombre de personnes)`,
`Deleted question (rhzE7)`)) |>
# Extraction code postal de l'adresse
rowwise() |>
mutate(`Quelle est l'adresse de votre commerce ?` = ifelse(`Quelle est l'adresse de votre commerce ?` == "\n \n", NA, `Quelle est l'adresse de votre commerce ?`),
Expand Down Expand Up @@ -181,12 +217,19 @@ data <- raw_data |>
.default = zip_code)) |>
left_join(codes_postaux_dg, by = c("zip_code_general" = "Code_postal")) |>
arrange(desc(population), .by = `Quel est le nom de votre commerce ?`) |>
slice(1, .by = `Quel est le nom de votre commerce ?`) |> #qd match avec plusieurs codes postaux, on garde seulement la ville avec la population la plus élevée
mutate(adresse_lower = tolower(`Quelle est l'adresse de votre commerce ?`)) |>
slice(1, .by = c(`Quel est le nom de votre commerce ?`, adresse_lower)) |> #qd match avec plusieurs codes postaux, on garde seulement la ville avec la population la plus élevée
mutate(categorie_population = case_when(population < 1000 ~ "population faible",
population >= 1000 & population < 10000 ~ "population moyenne",
population >= 10000 & population < 100000 ~ "population élevée",
population >= 100000 ~ "population très élevée",
.default = NA_character_))
.default = NA_character_)) |>
# Retrait des réponses doublons
filter(`Submission ID` %in% c("3c752f81-c4be-47ef-a5fc-2e62792d0552", # INSTINC ´ TIF
"2de002a5-e729-4b23-9093-4b49a4d3f8c9", # La trésorerie
"d1b39abf-2bb3-4f3f-b72d-215302aca983", # Betjeman & Barton
"a9ad2701-7f5d-419b-98d7-37c414c87a94") #rep quasi toute vide liée au bug des questions avec le remaniement du questionnaire
== FALSE)
# Filtre sur l'Ile de France
Expand All @@ -203,8 +246,18 @@ rio::export(paris, "data/export_commerces_paris.csv")
# Nom des colonnes
noms_cols_data <- names(data) |> as.data.frame()
# Nombre de réponses
a <- n_distinct(data$`Quel est le nom de votre commerce ?`)
aa <- nrow(data)
```

Au `r format(Sys.time(), '%d %B %Y')`, `r aa` réponses uniques ont été récoltées.


## Répartition de l'échantillon{.tabset}




```{r}
Expand Down Expand Up @@ -254,8 +307,8 @@ repartition_reelle |>
# Départements "Autres"
table <- data |>
filter(code_departement_partenaires == "Autres") |>
summarise(`Nombre de commerces` = n(), .by = nom_departement) |>
arrange(desc(`Nombre de commerces`)) |>
summarise(`Nombre de réponses` = n(), .by = nom_departement) |>
arrange(desc(`Nombre de réponses`)) |>
rename(Département = nom_departement)
# Affichage des données
datatable(table, options = list(pageLength = 10))
Expand Down Expand Up @@ -305,7 +358,7 @@ Les tranches de population sont les suivantes :

# Aperçu des données

```{r}
```{r custom_theme}
# Thème pour les graphs
font <- "Open Sans"
custom_theme <- function(){
Expand Down Expand Up @@ -333,10 +386,19 @@ custom_theme <- function(){
strip.background = ggplot2::element_rect(fill = "white"),
strip.text = ggplot2::element_text(size = 22, hjust = 0, face = "bold"))
}
```

```{r}
# Carto des réponses
```

# Premier graphique
ggplot(raw_data) +
aes(x = `Quelle est la catégorie de votre commerce ?`) +
<br>

```{r}
ggplot(data) +
aes(x = reorder(`Quelle est la catégorie de votre commerce ?`,`Quelle est la catégorie de votre commerce ?`,
function(x)+length(x))) +
geom_bar(fill = "#3182BD") +
labs(
y = "Nombre de commerces",
Expand All @@ -346,30 +408,8 @@ ggplot(raw_data) +
theme_minimal() +
custom_theme() +
theme(panel.grid.major.x = ggplot2::element_line(color = "#cbcbcb"),
panel.grid.major.y = ggplot2::element_blank(),
axis.title.y = element_blank())
```

<br>

```{r}
raw_data |>
mutate(`Hors période de fêtes, quelle est la fréquentation moyenne de votre commerce par jour ? (en nombre de personnes)` =
factor(`Hors période de fêtes, quelle est la fréquentation moyenne de votre commerce par jour ? (en nombre de personnes)`,
levels = c("1 à 20", "20 à 50", "50 à 100", "100 et 200", "Plus de 200"))) |>
filter(!is.na(`Hors période de fêtes, quelle est la fréquentation moyenne de votre commerce par jour ? (en nombre de personnes)`)) |>
ggplot() +
aes(
x = `Hors période de fêtes, quelle est la fréquentation moyenne de votre commerce par jour ? (en nombre de personnes)`
) +
geom_bar(fill = "#3182BD") +
labs(
y = "Nombre de commerces",
x = "Fréquentation moyenne du commerce par jour",
title = "Fréquentation des commerces répondants"
) +
theme_minimal() +
custom_theme()
panel.grid.major.y = ggplot2::element_blank(),
axis.title.y = element_blank())
```

<br>
Expand Down Expand Up @@ -403,7 +443,43 @@ table |>
color = "#666666", margin = ggplot2::margin(9, 0, 9, 0)),
plot.title.position = "plot",
plot.caption.position = "plot") +
guides(fill = guide_legend(reverse = F, title = " ")) +
guides(fill = guide_legend(reverse = T, title = " ")) +
geom_text(aes(y = ypos, x = 2, label = paste(round(Pourcentage,0), "%", sep="")), color = "#333333", size=5, check_overlap = T)
```


<br>

```{r}
# Table
table <- data |>
summarise(nb= n(), .by = `Êtes-vous en contact direct avec des clients ?`) |> na.omit() |>
mutate(Pourcentage = round(nb / sum(nb) * 100, 0)) |>
mutate(ypos = cumsum(Pourcentage) - .9 * Pourcentage, .by = `Êtes-vous en contact direct avec des clients ?`)
# Dataviz
table |>
ggplot(aes(x="", y=nb, fill=`Êtes-vous en contact direct avec des clients ?`)) +
geom_bar(stat="identity", width=1, color="white", size = .5) +
coord_polar("y") +
scale_fill_manual(values = c("Oui" = "#3182bd", "Non" = "#9ecae1")) +
labs(title = str_wrap("Répartition des commerces répondants selon s'ils sont en contact direct avec des clients", width = 35)) +
theme_classic() +
theme(legend.position = "top",
strip.text.x = element_text(size = 12, face = "bold"),
strip.background = element_blank(),
axis.title = element_blank(),
axis.ticks = element_blank(),
axis.line = element_blank(),
axis.text = element_blank(),
legend.text = ggplot2::element_text(size = 18,color = "#222222"),
text = element_text(family = "Montserrat", size = 12),
plot.title = ggplot2::element_text(size = 19, face = "bold", color = "#222222"),
plot.caption = ggplot2::element_text(face = "italic", size = 18,
color = "#666666", margin = ggplot2::margin(9, 0, 9, 0)),
plot.title.position = "plot",
plot.caption.position = "plot") +
guides(fill = guide_legend(reverse = T, title = " ")) +
geom_text(aes(y = ypos, x = 2, label = paste(round(Pourcentage,0), "%", sep="")), color = "#333333", size=5, check_overlap = T)
```

Expand Down Expand Up @@ -445,6 +521,29 @@ ggVennDiagram(table, label_alpha = 0) +
plot.caption.position = "plot")
```

<br>

```{r}
data |>
mutate(`Où vendez-vous vos produits / services ?` = str_replace_all(`Où vendez-vous vos produits / services ?`,
c("Dans un lieu de vente à durée limitée / non fixe" = "Lieu de vente non fixe",
"Dans un lieu de vente permanent / fixe" = "Lieu de vente fixe",
"Je n'ai pas d'espace dédié \\(déplacements à domicile ou présence en ligne uniquement\\)" = "Pas d'espace dédié"))) |>
ggplot() +
aes(x = reorder(`Où vendez-vous vos produits / services ?`,`Où vendez-vous vos produits / services ?`,
function(x)+length(x))) +
geom_bar(fill = "#3182BD") +
labs(
y = "Nombre de commerces",
title = "Lieu de vente des commerces répondants"
) +
coord_flip() +
theme_minimal() +
custom_theme() +
theme(panel.grid.major.x = ggplot2::element_line(color = "#cbcbcb"),
panel.grid.major.y = ggplot2::element_blank(),
axis.title.y = element_blank())
```

<br>

Expand Down Expand Up @@ -517,6 +616,66 @@ table |>
```


<br>

```{r}
# Table
table <- data |>
mutate(`Travaillez-vous seul ?` = substr(`Travaillez-vous seul ?`, 1, 3)) |>
summarise(nb= n(), .by = `Travaillez-vous seul ?`) |> na.omit() |>
mutate(Pourcentage = round(nb / sum(nb) * 100, 0)) |>
mutate(ypos = cumsum(nb) - .5 * nb)
# Dataviz
table |>
ggplot(aes(x = "", y = nb, fill = `Travaillez-vous seul ?`)) +
geom_bar(stat = "identity", width = 1, color = "white", size = 2) +
coord_polar("y") +
scale_fill_manual(values = c("Oui" = "#3182bd", "Non" = "#9ecae1")) +
labs(title = str_wrap("Répartition des commerces répondants selon s'ils travaillent seuls ou avec des salariés / associés", width = 35)) +
theme_classic() +
theme(legend.position = "top",
strip.text.x = element_text(size = 12, face = "bold"),
strip.background = element_blank(),
axis.title = element_blank(),
axis.ticks = element_blank(),
axis.line = element_blank(),
axis.text = element_blank(),
legend.text = ggplot2::element_text(size = 18, color = "#222222"),
legend.title = ggplot2::element_text(size = 18, color = "#222222"),
text = element_text(family = "Montserrat", size = 12),
plot.title = ggplot2::element_text(size = 19, face = "bold", color = "#222222"),
plot.caption = ggplot2::element_text(face = "italic", size = 18,
color = "#666666", margin = ggplot2::margin(9, 0, 9, 0)),
plot.title.position = "plot",
plot.caption.position = "plot") +
guides(fill = guide_legend(reverse = T, title = "Travail seul : ")) +
geom_text(aes(y = ypos, x = 2, label = paste(round(Pourcentage,0), "%", sep="")),
color = "#333333", size=5, check_overlap = T)
```

<br>

```{r}
data |>
mutate(`Hors période de fêtes, quelle est la fréquentation moyenne de votre commerce par jour ? (en nombre de personnes)` =
factor(`Hors période de fêtes, quelle est la fréquentation moyenne de votre commerce par jour ? (en nombre de personnes)`,
levels = c("1 à 20", "20 à 50", "50 à 100", "100 et 200", "Plus de 200"))) |>
filter(!is.na(`Hors période de fêtes, quelle est la fréquentation moyenne de votre commerce par jour ? (en nombre de personnes)`)) |>
ggplot() +
aes(
x = `Hors période de fêtes, quelle est la fréquentation moyenne de votre commerce par jour ? (en nombre de personnes)`
) +
geom_bar(fill = "#3182BD") +
labs(
y = "Nombre de commerces",
x = "Fréquentation moyenne du commerce par jour",
title = "Fréquentation des commerces répondants"
) +
theme_minimal() +
custom_theme()
```

# ![](images/lien_social.png){width=11%} <FONT COLOR="#B4B1B1">Lien social</FONT>


Expand Down Expand Up @@ -4891,7 +5050,7 @@ table |>
geom_treemap_text(aes(area = n, fill = Var,
label = paste0(str_wrap(Var, width = 30), "\n(", n, " commerces)")),
colour = "white", place = "centre", size = 15, grow = TRUE) +
scale_fill_manual(values = c("#345E68", "#afc7de", "#0C4C8A", "#9ecae1","#7A9BB1",
scale_fill_manual(values = c("#345E68", "#afc7de", "#afc7de", "#0C4C8A", "#9ecae1","#7A9BB1",
"#3081bc", "#0C4C8A", "#9ecae1","#7A9BB1", "#3081bc")) +
labs(title = "Solutions de recycalge ou récupération \nproposées par les commerçants") +
custom_theme() +
Expand Down
558 changes: 282 additions & 276 deletions Questionnaire_effets_commerce/Questionnaire_effets_commerce.html

Large diffs are not rendered by default.

0 comments on commit 9b0f510

Please sign in to comment.