Agréger plusieurs lignes du même data.frame dans R en fonction des valeurs communes dans des colonnes données
J'ai un data.frame
qui ressemble à ceci:
# set example data
df <- read.table(textConnection("item\tsize\tweight\tvalue
A\t2\t3\t4
A\t2\t3\t6
B\t1\t2\t3
C\t3\t2\t1
B\t1\t2\t4
B\t1\t2\t2"), header = TRUE)
# print example data
df
item size weight value
1 A 2 3 4
2 A 2 3 6
3 B 1 2 3
4 C 3 2 1
5 B 1 2 4
6 B 1 2 2
Comme vous pouvez le voir le size
et weight
colonnes de ne pas ajouter de la complexité, car ils sont les mêmes pour chaque item
. Cependant, il peut y avoir plusieurs value
s pour la même item
.
Je veux de l'effondrement des données.cadre pour avoir une ligne par item
en utilisant la moyenne value
:
item size weight value
1 A 2 3 5
3 B 1 2 3
4 C 3 2 1
Je suppose que je dois utiliser le aggregate
fonction, mais je ne pouvais pas comprendre exactement comment je peux obtenir le résultat ci-dessus.
source d'informationauteur mschilli
Vous devez vous connecter pour publier un commentaire.
La
data.table
solution...Voici la solution à l'aide de la
ddply
du package plyr:De nos jours, c'est ce que je ferais:
Cela donne le résultat suivant:
Je vais laisser la accepté de répondre en tant que tel que j'ai expressément demandé à
aggregate
mais je trouve ladplyr
solution la plus lisible.