我想做相当于这个SQL代码:
SELECT Cat_1, Cat_2, Cat_3, Sum(cost), Sum(quantity) FROM tbl_of_data
GROUP BY Cat_1, Cat_2, Cat_3;
如何在R?
中使用dplyr包执行此操作我试过了:
library(dplyr)
tbl_of_data %>%
group_by(Cat_1, Cat_2, Cat_3) %>%
mutate(cost, quantity)
但我的行数相同。
答案 0 :(得分:4)
我们需要summarise
或summarise_each
为每个组的组合获得一行sum
,这些组将等同于sql
输出。
tbl_of_data %>%
group_by(Cat_1, Cat_2, Cat_3) %>%
summarise_each(funs(sum), cost, quantity)
或者
tbl_of_data %>%
group_by(Cat_1, Cat_2, Cat_3) %>%
summarise(cost=sum(cost), quantity=sum(quantity))
mutate
创建一个新列。此外,在OP的mutate
代码中,它并没有包含sum
。如果打算创建新的sum
列,则可以使用mutate
或mutate_each
,即...%>% mutate(SumCost= sum(cost), SumQuantity = sum(quantity))
或...%>% mutate_each(funs(sum), cost, quantity)