如果我有data.tables
DT
and neighbors
:
set.seed(1)
library(data.table)
DT <- data.table(idx=rep(1:10, each=5), x=rnorm(50), y=letters[1:5], ok=rbinom(50, 1, 0.90))
n <- data.table(y=letters[1:5], y1=letters[c(2:5,1)])
n
是一个查找表。无论何时ok == 0
,我都想查找相应y1
的 inn
并将该值用于x
给定的值idx
。举个例子,DT的第4行:
> DT
idx x y ok
1: 1 -0.6264538 a 1
2: 1 0.1836433 b 1
3: 1 -0.8356286 c 1
4: 1 1.5952808 d 0
5: 1 0.3295078 e 1
6: 2 -0.8204684 a 1
y1
来自n
ford
是e
:_
> n[y == 'd']
y y1
1: d e
第 4行idx
是 1。所以我会使用:
> DT[idx == 1 & y == 'e', x]
[1] 0.3295078
我希望我的输出与所有值都替换为相应的 n['y1']值data.table
一样:DT[ok == 0]
x
x
> output
idx x y ok
1: 1 0.3295078 d 0
2: 2 -0.3053884 d 0
3: 3 0.3898432 a 0
4: 5 0.7821363 a 0
5: 7 1.3586800 e 0
6: 8 0.7631757 d 0
我可以想出几种使用base R或plyr
...的方法来做到这一点,也许周五晚些时候...但是无论这需要什么合并序列data.table
都超出了我的范围!