Ich versuche, einen Datenrahmen in R zu ändern, um mehrere Zeilen durch eine Messung zu gruppieren. Die Tabelle hat eine Position (km
), eine Größe (mm
) eine count
von Dingen in dieser Größe bin, eine site
und . Ich möchte die Größen nehmen, aus jedem eine Spalte machen (2, 4 und 6 in diesem Beispiel) und die entsprechende Anzahl in jede Zeile für diesen Ort, diese Site und dieses Jahr einfügen.Transponieren Spalte und Gruppe Datenrahmen
Es scheint wie eine Kombination aus Transponieren und Gruppierung, aber ich kann nicht einen Weg finden, dies zu tun in R. ich t()
geschaut habe, dcast()
und aggregate()
, aber die sind nicht wirklich alle in der Nähe.
So würde ich von etwas so gehen:
df <- data.frame(km=c(rep(32,3),rep(50,3)), mm=rep(c(2,4,6),2), count=sample(1:25,6), site=rep("A", 6), year=rep(2013, 6))
km mm count site year
1 32 2 18 A 2013
2 32 4 2 A 2013
3 32 6 12 A 2013
4 50 2 3 A 2013
5 50 4 17 A 2013
6 50 6 21 A 2013
Um dies:
km site year mm_2 mm_4 mm_6
1 32 A 2013 18 2 12
2 50 A 2013 3 17 21
Edit: ich die solution in einem vorgeschlagenen doppelten versucht, aber ich habe für mich nicht funktioniert, nicht wirklich sicher warum. Die Antwort unten funktioniert besser.
'tidyr :: Spread (df, mm, Anzahl)' ' – useR
Verwenden des sep' Argument in' tidyr :: Spread (df, mm, zählt, sep = "_") '' – markus
Verwenden eingestellt .seed() ', um' sample() 'im Code reproduzierbar zu machen, um Ihren Beispieldatenrahmen zu erzeugen. – neilfws