我正在尝试在R中创建类似于以下内容的代码:
UPDATE Table_1 A SET Column_1=
(SELECT Column_2 FROM Tabla_2 WHERE
Column_3=A.Column_3 AND
Column_4=A.Column_4
HAVING INDEX=MIN(INDEX));
例如,具有以下数据框:
Table_1 <-data.frame(
Column_1=c(1,1,1,1),
Column_3=c("1","2","3","1"),
Column_4=c("A","B","C","A")
)
Table_2<-data.frame(
Column_2 =c(2,3,4,5),
Column_3=c("1","2","3","4"),
Column_4=c("A","B","C","D")
)
我想更新表 1 以最终如下所示:
Table_1 <-data.frame(
Column_1=c(2,3,4,2),
Column_3=c("1","2","3","1"),
Column_4=c("A","B","C","A")
)
有了data.table
,我们可以做一个连接和赋值(:=
(
library(data.table)
setDT(Table_1)[Table_2, Column_1 := Column_2, on = .(Column_4)]
Table_1
# Column_1 Column_3 Column_4
#1: 2 1 A
#2: 3 2 B
#3: 4 3 C
#4: 2 1 A