Ho un frame di dati che ho ricevuto daR: Arrotolare i valori delle colonne contenenti NA di per somma mentre il raggruppamento con l'ID del
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
Mentre ho imparato da questo post, ho potuto rimboccarsi i dati con ID e uno colonna.
Attualmente sto usando sqldf per sommare le righe e raggruppare per ID e tipo. Mentre questo fa il lavoro per me, è molto lento su un set di dati più grande.
df1 <- sqldf("SELECT ID, Type, Sum(Point_A) as Point_A, Sum(Point_A) as Point_A
FROM df
GROUP BY ID, Type")
Si prega di suggerire l'uso di qualsiasi altra tecnica che possa risolvere questo problema. Ho iniziato a imparare dplyr & plyr packages e lo trovo molto interessante ma non sapendo come applicarlo qui.
output desiderato
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, grazie ancora per avermi aiutato con questa domanda. Questo pacchetto dplyr mi stupisce ogni volta. :-) È velocissimo su un set di dati più grande. – Sharath
Perché non 'summarise_each()' ?? – Arun
@Arun Stavo rispondendo a domande simili con piccole varianti e ho dimenticato di aggiungere il metodo più semplice. –