https://github.com/noebarthelemy/susotidyr
SuSoTidyR is an R package for importing, cleaning, and organizing data from Survey Solutions exports. It converts metadata and survey results into a tidy format, simplifies handling of missing values, replaces coded values with labels, and removes unnecessary variables, optimizing data workflows for Survey Solutions users.
https://github.com/noebarthelemy/susotidyr
r survey-solutions
Last synced: 2 months ago
JSON representation
SuSoTidyR is an R package for importing, cleaning, and organizing data from Survey Solutions exports. It converts metadata and survey results into a tidy format, simplifies handling of missing values, replaces coded values with labels, and removes unnecessary variables, optimizing data workflows for Survey Solutions users.
- Host: GitHub
- URL: https://github.com/noebarthelemy/susotidyr
- Owner: NoeBarthelemy
- Created: 2024-11-12T23:15:26.000Z (7 months ago)
- Default Branch: main
- Last Pushed: 2024-11-28T00:29:19.000Z (6 months ago)
- Last Synced: 2025-03-25T22:45:01.995Z (2 months ago)
- Topics: r, survey-solutions
- Language: HTML
- Homepage:
- Size: 1.09 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.Rmd
Awesome Lists containing this project
README
---
output: github_document
---```{r, include = FALSE}
knitr::opts_chunk$set(
collapse = TRUE,
comment = "#>",
fig.path = "man/figures/README-",
out.width = "100%"
)
```# SuSoTidyR
**(ENG) SuSoTidyR** is an R package designed to facilitate the import, cleaning, and transformation of data exported from Survey Solutions. This package helps structure the data in a **tidy** format, making it easier to analyze and work with. It also includes functions to handle unwanted variables generated by configuration errors, such as missing response limits in list-type questions.
**(FR) SuSoTidyR** est un package R conçu pour faciliter l'importation, le nettoyage et la transformation des données exportées depuis Survey Solutions. Ce package aide à structurer les données dans un format **tidy**, rendant leur analyse et manipulation plus simples. Il inclut également des fonctions pour gérer les variables inutiles générées par des erreurs de configuration, comme l'absence de limite de réponses dans les questions de type liste.
## Main Features (ENG)
- **import_metadata**: Imports metadata and variable labels from Survey Solutions `.do` files.
- **import_results**: Imports main survey results along with associated files, such as rosters, assignments, and interviews.
- **clean_lists**: Removes unwanted columns containing only specific missing values (e.g., `-999999999`, `##N/A##`).
- **replace_na_values**: Replaces specific missing values with `NA` to standardize missing data.
- **values_to_labels**: Replaces coded values with their corresponding labels for easier interpretation.
## Fonctionnalités principales (FR)
- **import_metadata** : Importe les métadonnées et les labels des variables depuis les fichiers `.do` de Survey Solutions.
- **import_results** : Importe les résultats d’enquête principaux ainsi que les fichiers associés, comme les rosters, les assignments et les interviews.
- **clean_lists** : Supprime les colonnes inutiles contenant uniquement des valeurs manquantes spécifiques (e.g., `-999999999`, `##N/A##`).
- **replace_na_values** : Remplace les valeurs spécifiques de données manquantes par des `NA` pour uniformiser les données.
- **values_to_labels** : Remplace les valeurs codées par leurs labels pour les rendre plus interprétables.
## Installation
Install the package directly from GitHub using the `remotes` package:
Installez le package directement depuis GitHub avec le package `remotes` :
```{r, results = "hide"}
# If remotes is not installed / Si remotes n'est pas installé
install.packages("remotes")# Install SuSoTidyR from GitHub / Installer SuSoTidyR depuis GitHub
remotes::install_github("noebarthelemy/SuSoTidyR")
```## Usage / Utilisation
Here is an example workflow with **SuSoTidyR** to import, clean, and organize data from a Survey Solutions survey.
Voici un exemple de flux de travail avec **SuSoTidyR** pour importer, nettoyer et organiser les données d'une enquête Survey Solutions.
### 1. Import Metadata / Importer les Métadonnées
Use `import_metadata` to load Survey Solutions metadata from a folder containing `.do` files.
Utilisez `import_metadata` pour charger les métadonnées de *Survey Solutions* depuis un dossier contenant des fichiers `.do`.\
```{r, results = "hide"}
library(SuSoTidyR)
library(tidyverse)
library(here)# Path to exported metadata folder / Chemin vers le dossier de métadonnées exportées
metadata <- import_metadata(here("example_data"))
head(metadata)```
### 2. Import Survey Results / Importer les Résultats de l'Enquête
Use `import_results` to import main survey results along with associated files, by specifying the questionnaire variable name and files to import.
Utilisez `import_results` pour importer les résultats de l'enquête, y compris les rosters et les autres fichiers associés, en spécifiant le nom de la variable de questionnaire et les fichiers à importer.
```{r}
# Import results with rosters / Importer les résultats avec les rosters
# Import results with rosters etc / Importer les résultats avec les rosters etc
import_results(
Variable_Questionnaire = "ESS_2024",
Importer_Rosters = TRUE,
Importer_AssignmentsValues = TRUE,
Importer_InterviewsValues = TRUE,
dossier_resultats = here("example_data")
)
```### 3. Clean Unnecessary Columns / Nettoyer les Colonnes Indésirables
When list-type questions are configured without limits in the number of answers, Survey Solutions may generate hundreds of columns containing only missing values. Use `clean_lists` to remove these unnecessary columns from the results and optionally from the metadata.
Lorsque des questions de type liste sont configurées sans limites de nombre de réponses, Survey Solutions peut générer des centaines de colonnes contenant uniquement des valeurs manquantes. Utilisez `clean_lists` pour supprimer ces colonnes inutiles dans les résultats et éventuellement dans la nomenclature.\
```{r}
# Clean unnecessary columns in results / Nettoyer les colonnes indésirables du tableau de résultats
ESS_2024_clean <- ESS_2024 %>%
clean_lists()# Clean some roster data / Nettoyer les colonnes indésirables du tableau de résultats d'un des rosters :
ESS_2024_Roster_leviers_clean <- ESS_2024_Roster_leviers %>%
clean_lists()# Clean the metadata based on removed columns / Nettoyer la nomenclature en fonction des colonnes supprimées
# WARNING : USE THE NON CLEANED VERSION OF THE DATASET (ESS_2024 and not ESS_2024_clean) OTHERWISE THIS WILL NOT WORK.
# ATTENTION : UTILISEZ LA VERSION NON NETTOYEE DU JEU DE DONNEES (ESS_2024 ET NON PAS ESS_2024_clean) SINON CELA NE FONCTIONNERA PAS :nomenclature_clean <- metadata %>%
clean_lists(data = list(ESS_2024, ESS_2024_Roster_AvantApres))```
### 4. Replace Specific Missing Values / Remplacer les Valeurs Manquantes Spécifiques
Values like `-999999999` or `##N/A##` may indicate missing data. Use `replace_na_values` to standardize these as `NA`.
Certaines valeurs comme `-999999999` ou `##N/A##` peuvent être utilisées pour indiquer des données manquantes. Utilisez `replace_na_values` pour standardiser ces valeurs manquantes en les remplaçant par `NA`.\
```{r}
# Replace specific missing values with NA / Remplacer les valeurs manquantes spécifiques par NA
ESS_2024_NA_clean <- ESS_2024_clean %>%
replace_na_values()```
### 5. Replace coded values with labels / Remplacer les valeurs codées par leurs labels
To make the data more interpretable, replace coded values in the results table with their associated labels from the metadata.
Pour faciliter l’interprétation, vous pouvez remplacer les valeurs codées dans le tableau de résultats par les labels associés à partir de la nomenclature.
```{r, warning= FALSE}
# Replace coded values with labels / Remplacer les valeurs codées par leurs labels
ESS_2024_labeled <- ESS_2024_NA_clean %>%
values_to_labels(nomenclature_clean, columns = "all")```
## Full Example / Exemple Complet
Here's a full example workflow with **SuSoTidyR**:
Voici un exemple complet de flux de travail avec **SuSoTidyR** :
```{r, results = "hide"}
library(SuSoTidyR)
library(tidyverse)
library(here)# Path to exported metadata folder / Chemin vers le dossier de métadonnées exportées
metadata <- import_metadata(here("example_data"))# Import results with rosters etc / Importer les résultats avec les rosters etc
import_results(
Variable_Questionnaire = "ESS_2024",
Importer_Rosters = TRUE,
Importer_AssignmentsValues = TRUE,
Importer_InterviewsValues = TRUE,
dossier_resultats = here("example_data")
)# Clean unnecessary columns in results / Nettoyer les colonnes indésirables du tableau de résultats
ESS_2024_clean <- ESS_2024 %>%
clean_lists()# Clean some roster data / Nettoyer les colonnes indésirables du tableau de résultats d'un des rosters :
ESS_2024_Roster_AvantApres_clean <- ESS_2024_Roster_AvantApres %>%
clean_lists()# Clean the metadata based on removed columns / Nettoyer la nomenclature en fonction des colonnes supprimées
# WARNING : USE THE NON CLEANED VERSION OF THE DATASET (ESS_2024 and not ESS_2024_clean) OTHERWISE THIS WILL NOT WORK.
# ATTENTION : UTILISEZ LA VERSION NON NETTOYEE DU JEU DE DONNEES (ESS_2024 ET NON PAS ESS_2024_clean) SINON CELA NE FONCTIONNERA PAS :nomenclature_clean <- metadata %>%
clean_lists(data = list(ESS_2024, ESS_2024_Roster_AvantApres))# Replace specific missing values with NA / Remplacer les valeurs manquantes spécifiques par NA
ESS_2024_NA_clean <- ESS_2024_clean %>%
replace_na_values()# Replace coded values with labels / Remplacer les valeurs codées par leurs labels
ESS_2024_labeled <- ESS_2024_NA_clean %>%
values_to_labels(nomenclature_clean, columns = "all")
```## Contributions
Contributions are welcome! If you have suggestions, ideas for improvement, or if you encounter any issues, feel free to create an issue or submit a pull request on GitHub.
Les contributions sont les bienvenues ! Si vous avez des suggestions, des idées d’amélioration ou si vous rencontrez des problèmes, n’hésitez pas à créer une issue ou à soumettre une pull request sur GitHub.