2015-08-27 41 views
1

我想要做的這個SQL代碼相當於:我怎麼翻譯這個SQL來dplyr

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) 

但我結束了相同的行數。

回答

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)

+1

oh k。我剛剛看到其他地方使用的mutate,並嘗試進行反向工程。謝謝:D – KillerSnail

+0

@KillerSnail沒問題。很高興幫助你。 – akrun