forum

Statistiques Basiques » Calcul de fréquence des modalités d'une question à choix multiple

Booster Fronde

rank_0.png

Avatar

Inscrit le: 07/11/2017

Messages: 5

Le 12/11/2017 à 21h05
Bonjour
J'ai collecté des données socio-économiques à l'aide ODK que j'analyse sous R. J'ai une question à choix multiples avec plusieurs modalités que je voudrais avoir la fréquence de chaque modalité.
J'ai essayé de convertir toutes modalités de la variable en des variables boolénnes en utilisant ce code:
qcm$q0_cacao <- ifelse(str_detect(qcm$farm_type, pattern="cacao"), 1, 0)
qcm$q0_cafe <- ifelse(str_detect(qcm$farm_type, pattern="cafe"), 1, 0)
qcm$q0_anacarde <- ifelse(str_detect(qcm$farm_type, pattern="anacarde"), 1, 0)
qcm$q0_hevea <- ifelse(str_detect(qcm$farm_type, pattern="hevea"), 1, 0)
....
....

Je voudrais calculer la fréquence de chaque modalité sous R et l'avoir sous forme de tableau comme suit: https://www.dropbox.com/s/jeofweytnhansn3/result.xlsx?dl=0
Je sais le faire sous Stata en utilisant la commande mrtab q0_cacao - q0_xxxx by (village_name) column mais je voudrais effectuer toute l'analyse en utilisant exclusivement R.

Mes données : https://www.dropbox.com/s/dmlog5pjmmkm83c/qcm.xlsx?dl=0
   

Administrateur

rank_admin.png

Avatar

Inscrit le: 16/05/2010

Messages: 17

Le 15/11/2017 à 14h38
Code R :
 
library(tidyverse)
library(stringr)
 
# Importer les données et changer le nom des colonnes
df <- read_tsv(file.choose())  
colnames(df) <- c("village", "respondant", "farm_type")
 
# Fonction d'aide pour compter
count_farm <- function(x, type){
  str_detect(x, type) %>%
    sum()
}
 
# 1. Grouper les donner par village 
# 2. Compter les fréquencesde chaque modalité
res <- df %>%
  group_by(village) %>%
  summarise(
    Cacao = count_farm(farm_type, "cacao"),
    Manioc = count_farm(farm_type, "manioc"),
    Palmier = count_farm(farm_type, "palmier")
  ) 
res
 


Le résultat ressemble à çà:

# A tibble: 3 x 4
   village Cacao Manioc Palmier
           
1   Abigui     6      4       1
2      Man     4      5       2
3 Tiassale     5      2       1
Site web    

Booster Fronde

rank_0.png

Avatar

Inscrit le: 07/11/2017

Messages: 5

Le 15/11/2017 à 16h09
Bonjour Abdoukadel
Super!
Quel serait le code si l'on veut avoir les fréquences (résultat ci-dessus) en pourcentage?
Merci beaucoup d'avance, vous enlevez une épine du dos.
Respectueusement
Jean-Luc
   

Administrateur

rank_admin.png

Avatar

Inscrit le: 16/05/2010

Messages: 17

Le 17/11/2017 à 06h58
Pour calculer les proportion par rapport au total de la ligne, vous taper le code suivant:

Code R :
 
row.sum <- apply(res, 1, sum)
prop <- res/row.sum
prop
 


Pour calculer la proportion par rapport au total des colonnes:

1. Transposer les données
2. Utiliser le même code que précédemment
3. Re-transposer pour avoir les données dans leur format d'origine

Code R :
 
res.t <- t(res)
row.sum <- apply(res.t, 1, sum)
prop <- t(res.t/row.sum)
prop
 
Site web    

Booster Fronde

rank_0.png

Avatar

Inscrit le: 07/11/2017

Messages: 5

Le 17/11/2017 à 15h39
Bonjour
J'ai essayé mais cela renvoie un message d'erreur "Error in FUN(newX[, i], ...) : invalid 'type' (character) of argument"
   

Booster Fronde

rank_0.png

Avatar

Inscrit le: 07/11/2017

Messages: 5

Le 20/11/2017 à 17h08
Comment calculer la proportion par rapport au total des individus par village [Tiassale=6, Abigui = 6; Man = 5] et non par rapport total de la ligne ou la colonne?
Comment calculer la proportion de l'ensemble pour completer le tableau produit?




Edité par maculata Le 20/11/2017 à 20h06
   

Booster Fronde

rank_0.png

Avatar

Inscrit le: 24/10/2019

Messages: 1

Le 24/10/2019 à 15h28
Hello my dear friends! My name is John and I am 38 years old. For the last sever years I am working as a essay author in the awesome writing company ever. We can write you essay on different topics, with the lowest prices and shortest terms. For more information I recommend you to visit resumeedge.com webpage!
   
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie
1 Utilisateur en ligne : 0 Administrateur, 0 Modérateur, 0 Membre et 1 Visiteur
Utilisateur en ligne : Aucun membre connecté