Ich habe einen großen Datensatz, der split()
in R drosselt. Ich kann dplyr
group_by verwenden (was sowieso eine bevorzugte Methode ist), aber ich kann nicht bestehen Ergebnis grouped_df
als eine Liste von Datenrahmen, ein Format, das von meinen aufeinanderfolgenden Verarbeitungsschritten erforderlich ist (ich muss auf SpatialDataFrames
und ähnliche zwingen).Emulate split() mit dplyr group_by: gebe eine Liste von Datenframes zurück
betrachten ein Beispieldatensatz:
df = as.data.frame(cbind(c("a","a","b","b","c"),c(1,2,3,4,5), c(2,3,4,2,2)))
listDf = split(df,df$V1)
kehrt
$a
V1 V2 V3
1 a 1 2
2 a 2 3
$b
V1 V2 V3
3 b 3 4
4 b 4 2
$c
V1 V2 V3
5 c 5 2
ich dies mit group_by
(wie group_by(df,V1)
etwas) emulieren möchte aber wieder ein, grouped_df
. Ich weiß, dass do
der Lage sein sollte, mir zu helfen, aber ich bin nicht sicher, über die Nutzung (auch link für eine Diskussion sehen.)
Beachten Sie, dass durch den Namen des Faktors Namen jeder Liste verteilen, die verwendet wurde, um diese Gruppe zu etablieren - Dies ist eine gewünschte Funktion (letztlich, Bonus-Kudos für eine Möglichkeit, diese Namen aus der Liste der DFS zu extrahieren).
Warum ist 'group_by' über' split' bevorzugt? Weil es von Hadley geschrieben wurde? 'group_by' hat seinen Platz und es ist nicht dafür gedacht, einen Datensatz in verschiedene Datenrahmen zu teilen, während' split' genau das erreichen soll. –
Nein, nicht weil es von hadley geschrieben wurde, sondern weil es komplett ist - und zwar schnell. Ich habe einen Datensatz, der ein df von 400mb ist, und split Ergebnisse in eine Monstrosität (nicht sicher, warum es die Größe aufbläht), und stürzt R beim Speichern ab. Dies ist ein Trainingsdatensatz, der echte ist dann ein 8,5 GB-Datensatz (1 GB als RData). Gruppe funktioniert, Split ist fehlgeschlagen. Ich habe Bigsplit probiert, aber auch nicht geschafft. Immer noch zurück zur Frage - wie geht das mit group_by (und dplyr)? – MartinT
Auch hier war 'group_by' nicht dafür gedacht, einen Datensatz in separate Datensätze aufzuteilen. 'do' wird wahrscheinlich viel langsamer sein als' split'. 'Split' ist vollständig vektorisiert und kompiliert und ich sehe nicht, warum es langsamer als jede andere Alternative ist. –