Efficacement somme sur plusieurs colonnes dans la R
J'ai le texte suivant condensé de l'ensemble de données:
a<-as.data.frame(c(2000:2005))
a$Col1<-c(1:6)
a$Col2<-seq(2,12,2)
colnames(a)<-c("year","Col1","Col2")
for (i in 1:2){
a[[paste("Var_", i, sep="")]]<-i*a[[paste("Col", i, sep="")]]
}
Je voudrais faire la somme des colonnes Var1 et Var2, que j'utilise:
a$sum<-a$Var_1 + a$Var_2
En réalité, mon jeu de données est beaucoup plus important, je voudrais somme de Var_1 à Var_n (n peut être jusqu'à 20). Il doit y avoir un moyen plus efficace de faire ce que:
a$sum<-a$Var_1 + ... + a$Var_n
Essayez avec appliquent:$somme <- appliquer(a[,-1], 1, sum)
Merci, fonctionne bien dans ce qui suit, où i est l'index de colonne de Var_1 et j est l'index de colonne de Var_n
Et en automatisant le processus encore plus loin (à l'aide de stackoverflow.com/questions/9277363/...) :
Merci, fonctionne bien dans ce qui suit, où i est l'index de colonne de Var_1 et j est l'index de colonne de Var_n
a$sum <- apply(a[,c(i:j)], 1, sum)
Et en automatisant le processus encore plus loin (à l'aide de stackoverflow.com/questions/9277363/...) :
a$sum <- apply(a[,c(match("Var_1",names(a)):match("Var_n",names(a)))], 1, sum)
a$Col3 <- rowSums(a[,2:3])
OriginalL'auteur user2568648 | 2015-03-12
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser
colSums(a[,c("Var1", "Var2")])
ourowSums(a[,c("Var_1", "Var_2")])
. Dans votre cas, vous voulez que le dernier.OriginalL'auteur psoares