2 votes

Lire des données de groupes multidimensionnels dans R

J'ai fait beaucoup de recherches sur Google mais je n'ai pas trouvé de solution satisfaisante à mon problème. Disons que nous avons un fichier de données sous la forme :

Tag v1 v2 v3
A 1 2 3
B 1 2 2
C 5 6 1
A 9 2 7
C 1 0 1

La première ligne est l'en-tête. La première colonne est l'identifiant du groupe (les données comportent 3 groupes A, B, C) et les autres colonnes sont des valeurs. Je souhaite lire ce fichier dans R afin de pouvoir appliquer différentes fonctions sur les données. Par exemple, j'ai essayé de lire le fichier et d'obtenir la moyenne des colonnes

dt<-read.table(file_name,head=T) #gives warnings
apply(dt,2,mean) #gives NA   NA   NA

Je veux lire ce fichier et obtenir la moyenne des colonnes. Ensuite, je veux séparer les données en 3 groupes (selon l'étiquette A, B, C) et je veux calculer la moyenne (par colonne) pour chaque groupe. Merci de m'aider.

1voto

Joshua Ulrich Points 68776

apply(dt,2,mean) ne fonctionne pas car apply transforme le premier argument en tableau par l'intermédiaire de as.matrix (comme indiqué dans le premier paragraphe de la section "Détails" du document ?apply ). La première colonne étant un caractère, tous les éléments de l'objet matrice coercitif seront des caractères.

Essayez plutôt ceci :

sapply(dt,mean) # works because data.frames are lists

Calculer les moyennes des colonnes par groupe :

# using base functions
grpMeans1 <- t(sapply(split(dt[,c("v1","v2","v3")], dt[,"Tag"]), colMeans))
# using plyr
library(plyr)
grpMeans2 <- ddply(dt, "Tag", function(x) colMeans(x[,c("v1","v2","v3")]))

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X