【发布时间】:2018-05-12 16:41:43
【问题描述】:
我有以下data.table
DT<- data.table(id=c(1,1,1,1,2,2,2,2),
place = c("a","b","c","d","a","b","d","e"),
seq = c(1,2,3,4,1,2,3,4))
setkey(DT,id)
data.table按id和seq排序:
setorder(DT,id,seq)
对于每个 id,我想查找序列 b,c,d,如果有这样的事情,我想用单行替换 b 和 c 的行,比如说 z(保留其他列与带有 a) 的行相同。
所以在这种情况下,新的 data.table 应该是
DT.tobe<- data.table(id=c(1,1,1,2,2,2,2),
place = c("a","z","d","a","b","d","e"),
seq = c(1,2,4,1,2,3,4))
> DT.tobe
id place seq
1: 1 a 1
2: 1 z 2
3: 1 d 4
4: 2 a 1
5: 2 b 2
6: 2 d 3
7: 2 e 4
我不得不说我不知道该尝试什么...我也可以接受 data.frame 解决方案的答案!
【问题讨论】:
-
为什么
b对应id = 2的行没有被z替换? -
@MKR 因为没有
c -
seq保留以前与b关联的值? -
@MichaelChirico 是的,所有其他列都保留以前与 b 关联的值
标签: r replace data.table