我想改变一个数据框两次,分成两组相互交叉的列.即:
df <- df %>% group_by(a, b) %>% mutate(x = sum(d))
df <- df %>% group_by(a, b, c) %>% mutate(y = sum(e))
Run Code Online (Sandbox Code Playgroud)
是否有更快/更优雅的方式来做到这一点?我希望能够做到这样的事情:
df <- df %>%
group_by(a, b) %>%
mutate(x = sum(d)) %>%
group_by(c) %>%
mutate(y = sum(e))
Run Code Online (Sandbox Code Playgroud)
或者也许保存第一个group_by
应用的变量,然后使用它两次.
akr*_*run 13
我们add=TRUE
在第二个中使用group_by
3个变量分组,c
在OP的例子中添加-
df %>%
group_by(a, b) %>%
mutate(x = sum(d)) %>%
group_by(c, add=TRUE) %>%
mutate(y = sum(e))
Run Code Online (Sandbox Code Playgroud)
根据文件 ?group_by
默认情况下,当add = FALSE时,group_by将覆盖现有组.要改为添加到现有组,请使用add = TRUE
这可以在一次group_by
调用中完成,但仅限于非dplyrish函数:
df %>%
group_by(a, b) %>%
mutate(x = sum(d), y = ave(e, c, sum))
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3216 次 |
最近记录: |