2016-12-16 7 views
-1

У меня есть dataframe так:Сумма столбца с условием в R

df <- data.frame(a=c(111,111,111,222,222,222,333,333,333), 
       b=c(1,0,1,1,1,1,0,0,1)) 
df 
    a b 
1 111 1 
2 111 0 
3 111 1 
4 222 1 
5 222 1 
6 222 1 
7 333 0 
8 333 0 
9 333 1 

Мне нужно, чтобы получить сумму столбца «Ъ» для каждого «а»:

A B 
1 111 2 
2 222 3 
3 333 1 

Как может Я делаю это самым быстрым способом?

ответ

-1

Вы можете использовать dplyr:

df %>% group_by(a) %>% summarise(.,b = sum(b)) 
2

Вообще говоря, самый быстрый метод с большими данными будет использовать data.table.

install.packages("data.table", type = "source", 
repos = "http://Rdatatable.github.io/data.table") 
library("data.table") 

df <- data.frame(a=c(111,111,111,222,222,222,333,333,333), 
      b=c(1,0,1,1,1,1,0,0,1)) 
df <- as.data.table(df) 
df[, sum(b), by = a] 
+1

Ваша последняя строка кода не дает вывода, описанного в OP. Это довольно близко: 'df [, sum (b), by = a]' – bdemarest

-2

Если мы используем пакет dplyr, мы действительно нужен код, как это (как уже упоминалось в других PhilC).

ДФ%>% group_by (а)%>% реферирования (, b = sum (b))?

Не так ли?

df%>% group_by (a)%>% суммировать (b = сумма (b))?

Смежные вопросы