data.table中的window函数没有变异

时间:2017-07-14 14:42:57

标签: r data.table

使用Dplyr,我们可以做到

urls.py

如何使用data.table实现相同的功能而无需存储中间结果?

library(dplyr)
mtcars %>% 
   group_by(am, cyl) %>% 
   summarise(mpg = sum(mpg)) %>% 
   mutate(totmpg = sum(mpg)) 

# A tibble: 6 x 4
# Groups:   am [2]
     am   cyl   mpg totmpg
   <dbl> <dbl> <dbl>  <dbl>
1     0     4  68.7  325.8
2     0     6  76.5  325.8
3     0     8 180.6  325.8
4     1     4 224.6  317.1 
5     1     6  61.7  317.1
6     1     8  30.8  317.1

1 个答案:

答案 0 :(得分:2)

您可以简单地使用链:

mtcars[,.(mpg = sum(mpg)),.(am, cyl)][,totmpg := sum(mpg) ,am][]
#   am cyl   mpg totmpg
#1:  1   6  61.7  317.1
#2:  1   4 224.6  317.1
#3:  0   6  76.5  325.8
#4:  0   8 180.6  325.8
#5:  0   4  68.7  325.8
#6:  1   8  30.8  317.1

最后一对[]确保打印结果。