<分区>

有如下结构的两个数据表:

 DT1 <- data.table(ID=c("A","B","C"), P0=c(1,10,100), key="ID") 
 DT2 <- data.table(ID=c("B","B","B","A","A","A","C","C","C"), t=rep(seq(0:2),3), P=c(NA,30,50,NA,4,6,NA,200,700))  

在数据表DT2中,列P中的所有NA都应由数据表DT1中的值P0更新>.

如果DT2DT1一样按ID排序,问题可以这样解决:

 setorder(DT2,ID) 
 idxr <- which(DT2[["t"]]==1) 
 set(DT2, i=idxr, j="P", value=DT1[["P0"]]) 

但是数据表怎么能在不先排序DT2的情况下进行“合并”呢?


评论关闭
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!