我该如何将这个sql翻译成dplyr

时间:2015-08-27 15:35:04

标签: r dplyr

我想做相当于这个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)

但我的行数相同。

1 个答案:

答案 0 :(得分:4)

我们需要summarisesummarise_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列,则可以使用mutatemutate_each,即...%>% mutate(SumCost= sum(cost), SumQuantity = sum(quantity))...%>% mutate_each(funs(sum), cost, quantity)