2017-11-08 12 views
0

Ich habe folgende Datenrahmenin R Verwenden dplyr auf mehrere summarize (n)

Daten zu erstellen
ID A B C 
    X 1 1 1 
    X 0 1 0 
    Y 2 0 0 
    Z 0 0 0 

Und ich group_by verwenden möchten und zusammenfassen (dplyr Paket) einen neuen Datenrahmen mit Summe aller zu schaffen Werte von A und B und C, gruppieren nach ID.

Output wie unten sein sollte:

ID A B C 
    X 1 2 1 
    Y 2 0 0 
    Z 0 0 0 

Mein Code ist unten:

data_new <- data %>% 
group_by(ID) %>% 
summarise(Total.A = sum(A)) %>% 
summarise(Total.B = sum(B)) 

jedoch nur der Code funktioniert mit Summieren A und danach, ich habe einen Fehler sagt

Error in summarise_impl(.data, dots) : Evaluation error: object 'B' not found. 

Könnten Sie bitte helfen?

+0

Sie mehrere Ausdrücke in einer Zusammenfassung Aufruf setzen können –

+1

Sie müssen 'Daten%>% group_by (ID)%>% summarise_all (Summe))' – akrun

+0

sowohl summarise_all und setzen Sie alle Ausdrücke in einem Zusammenfassungsaufruf arbeiten! Danke – lbrrrr

Antwort

0

Put> 1-Expression im fassen zusammen:

d %>% group_by(ID) %>% summarise(Total.A=sum(A), Total.B=sum(B)) 
# A tibble: 3 x 3 
     ID Total.A Total.B 
    <fctr> <int> <int> 
1  X  1  2 
2  Y  2  0 
3  Z  0  0 

und summarise_all verwenden, wenn Sie all die Dinge zusammenfassen wollen.

> d %>% group_by(ID) %>% summarise_all(sum) 
# A tibble: 3 x 4 
     ID  A  B  C 
    <fctr> <int> <int> <int> 
1  X  1  2  1 
2  Y  2  0  0 
3  Z  0  0  0 
+0

beide arbeiten! Vielen Dank. – lbrrrr

1

In dplyr summarise_all() gilt die Funktionen für alle (nicht-Gruppierung) Spalten wie unten dargestellt:

--- Daten Frame Creation ---

ID <- c("X","X","Y","Z") 

A <- c(1,0,2,0) 

B <- c(1,1,0,0) 

C <- c(1,0,0,0) 

df <- data.frame(ID,A,B,C)  

--- einfache Verwendung ---

df %>% 

    group_by(ID) %>% 

    summarise_all(sum) 
+0

Das scheint schon ein paar Minuten zurück zu sein. Ignoriere diese Antwort –

Verwandte Themen