Problème
J'ai 3 voitures (variable de regroupement) pour lesquelles les vitesses dans le temps sont enregistrées dans l'ensemble de données suivant. Je veux transposer ce cadre de données par groupe.Comment transposer une trame de données par groupe en utilisant la bibliothèque reshape2?
données
foo <- structure(list(file.ID2 = c("Cars_03", "Cars_03", "Cars_03",
"Cars_03", "Cars_03", "Cars_03", "Cars_03", "Cars_03", "Cars_04",
"Cars_04", "Cars_04", "Cars_04", "Cars_04", "Cars_04", "Cars_04",
"Cars_04", "Cars_05", "Cars_05", "Cars_05", "Cars_05", "Cars_05",
"Cars_05", "Cars_05", "Cars_05"), speed.kph.ED = c(129.3802848,
129.4022304, 129.424176, 129.4461216, 129.4680672, 129.47904,
129.5009856, 129.5229312, 127.8770112, 127.8221472, 127.7672832,
127.7124192, 127.6575552, 127.6026912, 127.5478272, 127.4929632,
134.1095616, 134.1205344, 134.1315072, 134.1534528, 134.1644256,
134.1753984, 134.1863712, 134.197344)), row.names = c(NA, -24L
), class = c("tbl_df", "tbl", "data.frame"), .Names = c("file.ID2",
"speed.kph.ED"))
désiré Sortie
> foo
V2 V3 V4 V5 V6 V7 V8 V9
Cars_03 129.3803 129.4022 129.4242 129.4461 129.4681 129.4790 129.5010 129.5229
Cars_04 127.8770 127.8221 127.7673 127.7124 127.6576 127.6027 127.5478 127.4930
Cars_05 134.1096 134.1205 134.1315 134.1535 134.1644 134.1754 134.1864 134.1973
Ce que j'ai essayé
Après beaucoup de recherches, je trouve que la bibliothèque reshape2
peut être utile. J'ai trouvé ce question qui semble être pertinent. Donc, j'ai essayé d'utiliser melt()
et dcast()
fonctionne comme suit:
library(reshape2)
dcast(melt(foo,id.vars = 1),
file.ID2 ~ variable, NULL)
Aggregation function missing: defaulting to length
file.ID2 speed.kph.ED
1 Cars_03 8
2 Cars_04 8
3 Cars_05 8
Mais ce juste agrège les valeurs (compte/somme). S'il vous plaît, aidez-moi à obtenir la sortie désirée. Merci.
Sans paquets, cela fonctionne: 'avec (foo, as.data.frame (t (sapply (split (speed.kph.ED, fichier.ID2), t))))' Omettre 'as.data.frame' est le résultat de la matrice est ok. –