【发布时间】:2018-03-16 16:27:09
【问题描述】:
我需要使用辅助分组变量执行基本的group_by / mutate 操作。例如:
df <- data.frame(
u = c(0, 0, 1, 0, 1),
v = c(8, 4, 2, 3, 5)
)
df %>%
group_by(tmp = cumsum(u)) %>%
mutate(w = cumprod(v)) %>%
ungroup %>%
select(-tmp)
我的问题是,如果 df 恰好已经包含一个名为 tmp 的列,我会丢失它。
当然,我可以选择一个非常奇特的名称而不是 tmp 以减少发生冲突的可能性(或者我什至可以选择类似 strrep("z", max(nchar(names(df))) + 1) 的名称,但我希望有一个更简洁的解决方案。
换句话说,我正在寻找与data.table 行等效的dplyr:
setDT(df)[, w := cumprod(v), by = cumsum(u)]
【问题讨论】:
-
df %>% group_by(cumsum(u)) %>% mutate(w = cumprod(v)) %>% ungroup %>% select(-`cumsum(u)`)? -
可能会有一个名为
cumsum(u)的列。 (我同意这不太可能,但仍然......)
标签: r dplyr data.table