小编zap*_*pp0的帖子

dplyr mutate的data.table替代方案?

我正在学习R而且我不确定在dplyr或data.table上标准化是否有意义.Dplyr语法非常好,但据我所知,它会在每个操作上复制数据帧,这是(或可能是)一个缺点.

我无法弄清楚的一件事是mutate的替代方案.

如果我有

df %>% group_by(foo) %>% mutate(
    bar  = cumsum(baz),
    q    = bar * 3.14)
Run Code Online (Sandbox Code Playgroud)

我可以做某事

df[,c("bar"):=list(cumsum(baz)),by=foo]
df$q <- df$bar*3.14
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法在data.table中执行此操作?

r data.table

9
推荐指数
2
解决办法
6085
查看次数

data.table,如何重置cumsum(或将组添加到group by)

我有一个包含一些计算列的数据表

dt <- data.table(x=c(1,4,-3,-2,3,4))
dt[,y:=cumsum(x)]
dt[,q:=cumsum(ifelse(x>0,x,0))]
    x y  q
1:  1 1  1
2:  4 5  5
3: -3 2  5
4: -2 0  5
5:  3 3  8
6:  4 7 12
Run Code Online (Sandbox Code Playgroud)

我需要做的是在y == 0之后重置q.本质上,行1:4属于A组,5:6属于B组.结果应为:

    x y  q
1:  1 1  1
2:  4 5  5
3: -3 2  5
4: -2 0  5
5:  3 3  3
6:  4 7  7
Run Code Online (Sandbox Code Playgroud)

我想我可以引入另一个具有值A,B,......的列组,它们会在y == 0之后发生变化,然后通过exssion使用它,但我不知道如何(至少不是使用for子句)

r data.table

7
推荐指数
3
解决办法
812
查看次数

标签 统计

data.table ×2

r ×2