ich einen Datenrahmen, die ich bekam vonR: aufrollen durch Summe Spaltenwerte enthält, NA, während sie von IDs Gruppierung
ID <- c("A","A","A","A","B","B","B","B")
Type <- c(45,45,46,46,45,45,46,46)
Point_A <- c(10,NA,30,40,NA,80,NA,100)
Point_B <- c(NA,32,43,NA,65,11,NA,53)
df <- data.frame(ID,Type,Point_A,Point_B)
ID Type Point_A Point_B
1 A 45 10 NA
2 A 45 NA 32
3 A 46 30 43
4 A 46 40 NA
5 B 45 NA 65
6 B 45 80 11
7 B 46 NA NA
8 B 46 100 53
Während ich von diesen post lernte, kann ich die Daten mit ID aufrollen und einem Säule.
Ich verwende derzeit sqldf, um die Zeilen und Gruppen nach ID und Typ zu summieren. Während dies die Arbeit für mich erledigt, ist es sehr langsam auf einem größeren Datensatz.
df1 <- sqldf("SELECT ID, Type, Sum(Point_A) as Point_A, Sum(Point_A) as Point_A
FROM df
GROUP BY ID, Type")
Bitte schlagen Sie die Verwendung von anderen Techniken vor, die dieses Problem lösen könnten. Ich habe begonnen, dplyr & plyr Pakete zu lernen, und ich finde es sehr interessant, aber nicht wissen, wie man es hier anwendet.
gewünschte Ausgabe
ID Type Point_A Point_B
1 A 45 10 32
2 A 46 70 43
3 B 45 80 76
4 B 46 100 53
Steven, nochmals vielen Dank, dass du mir auch bei dieser Frage geholfen hast. Dieses dplyr-Paket erstaunt mich jedes Mal. :-) Es ist super schnell auf einem größeren Datensatz. – Sharath
Warum nicht 'summary_each()' ?? – Arun
@Arun Ich habe ähnliche Fragen mit kleinen Varianten beantwortet und vergessen, die einfachste Methode hinzuzufügen. –