有以下結構的兩個數據表:R:在數據表中更新的NA與另一個數據表的值
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
列中的所有NAS應該由值P0
出被更新的數據表DT1
。
如果DT2
由ID
像DT1
有序,問題就可以解決這樣的:
setorder(DT2,ID)
idxr <- which(DT2[["t"]]==1)
set(DT2, i=idxr, j="P", value=DT1[["P0"]])
但數據表怎麼可以「合併」之前沒有訂購DT2
?
我明白了,什麼是每個'[]'做加盟的另一種選擇。這是一種又一種手術嗎? – kamath
@kamath與'dplyr'中的'%>%'類似。我們正在更新每個操作的結果數據集。 – akrun
你可以在'DT2 [DT1,P:= ifelse(is.na(P),i.P0,P),on ='ID']'' –