2017-06-27 1 views
0

Ich möchte verschiedene Spaltenwertzeilen in eine neue Spaltenzeile kombinieren.summe verschiedene Spaltenwertzeilen in eine neue Spaltenzeile in R

Beispiel df wie folgt aus:

df <- data.frame(area = c("a","b","c","a"), 
        d = c(1,3,6,3), 
        f = c(3,2,8,2), 
        e = c(4,7,1,8), 
        g = c(6,9,2,9)) 

Wo a, b, c Bereich Spaltenwert sind, möchte ich kombinieren/Summe zwei Reihen (a, c) in einen bekommen:

area d  f e g 
a+c+a 10 13 13 17 
b 3 2 7 9 

und ich habe wie diese versucht:

df <- aggregate(df, list(area=replace(area == c("a","c"), "a+c+a")), sum) 

Aber es wird nicht funktionieren. Danke.

Antwort

0

Eine andere Lösung dplyr

library(dplyr) 

aggr <- df[df$area %in% c("a", "c"),-1] %>% 
    summarize_all(sum) 
rbind(df[!(df$area %in% c("a", "c")),], 
     bind_cols(area = "a+c+a", aggr)) 

# area d f e g 
# 2  b 3 2 7 9 
# 1 a+c+a 10 13 13 17 
+0

dank verwenden, wenn ich Ihren Code auf meine Daten, die Teil der "bind_cols (Fläche = "a + c + a", aggr))" verwenden, wenn ein Fehler auftritt:“ Objekt kann nicht in einen Datenrahmen konvertiert werden ". und ich habe kein Ideal jetzt –

+0

@enerstoHuang komisch, wenn ich diesen genauen Code kopieren/einfügen funktioniert es gut für mich. Vielleicht dplyr aktualisieren? –

Verwandte Themen