【发布时间】:2019-11-28 17:46:12
【问题描述】:
有一些数据
library(data.table); set.seed(42)
dat <- data.table(id=1:5, group=c(1,1,1,2,2), time=c(1,2,3,1,2), val=runif(5))
> dat
id group time val
1: 1 1 1 0.9148060
2: 2 1 2 0.9370754
3: 3 1 3 0.2861395
4: 4 2 1 0.8304476
5: 5 2 2 0.6417455
我想对时间点 2 应用一些计算,例如 val*2,仅适用于没有第三个时间点的组。因此预期的输出是
> res
id group time val
1: 1 1 1 0.9148060
2: 2 1 2 0.9370754
3: 3 1 3 0.2861395
4: 4 2 1 0.8304476
5: 5 2 2 1.2834910
第 2 组中时间 2 的值已更改。 我怀疑它类似于
dat[,val:=val[max(time)==2]*2, by=group]
但这行不通。因为我想将计算应用到与我正在设置子集的时间点不同的时间点,所以我觉得这不能在 i 中完成,但我不知道该怎么做。
【问题讨论】:
-
能否请您添加一个包含您预期结果的列?我不确定我明白了。
标签: r data.table