Dplyr - Dire pour plusieurs colonnes
Je veux calculer la moyenne de plusieurs colonnes, la création d'une nouvelle colonne, à l'aide dplyr et sans fonte + fusion.
> head(growth2)
CODE_COUNTRY CODE_PLOT IV12_ha_yr IV23_ha_yr IV34_ha_yr IV14_ha_yr IV24_ha_yr IV13_ha_yr
1 1 6 4.10 6.97 NA NA NA 4.58
2 1 17 9.88 8.75 NA NA NA 8.25
3 1 30 NA NA NA NA NA NA
4 1 37 15.43 15.07 11.89 10.00 12.09 14.33
5 1 41 20.21 15.01 14.72 11.31 13.27 17.09
6 1 46 12.64 14.36 13.65 9.07 12.47 12.36
>
J'ai besoin d'une nouvelle colonne dans le jeu de données avec la moyenne de tous les IV colonnes.
J'ai essayé ceci:
growth2 %>%
group_by(CODE_COUNTRY, CODE_PLOT) %>%
summarise(IVmean=mean(IV12_ha_yr:IV13_ha_yr, na.rm=TRUE))
Et retourné plusieurs erreurs selon l'exemple utilisé, tels que:
Error in NA_real_:NA_real_ : NA/NaN argument
ou
Error in if (trim > 0 && n) { : missing value where TRUE/FALSE needed
Avez-vous besoin d'
rowMeans
pour les colonnes?
OriginalL'auteur fede_luppi | 2015-02-26
Vous devez vous connecter pour publier un commentaire.
Vous n'avez pas besoin de groupe, il suffit de
select()
et puismutate()
il fonctionne très bien pour moi sous 0.4.3
Il fonctionne avec
starts_with()
, mais par exemplemtcars %>% mutate(IVMean = rowMeans(select(., cyl,mpg), na.rm = TRUE))
ne fonctionne pas. Il fonctionne si vous sortez de la muter.OriginalL'auteur Rich Scriven
Utilisation
.
dans dplyr.OriginalL'auteur Shixiang Wang
vous pouvez utiliser comme suit:
vos données
vous pouvez également le faire
apply
que l'OP ne s'intéresse qu'à partir de colonnesIV12_ha_yr:....
Salut, tu veux dire que c'mydata <- cbind(data[,3:8],s'appliquent(data[,3:8],1,mean))
Je voulais dire
cbind(data,IVMean=apply(data[,3:8],1,mean, na.rm=TRUE))
sur la Base du code par l'OP, c'est un peu confus ce que le résultat attendu serait.oui, c'est sûr, en tenant compte de la NA !
Vous pouvez également remplacer le
apply
étape (ou d'ajouter comme une alternative) avecrowMeans(data[3:8], na.rm=TRUE)
OriginalL'auteur