1

我正在尝试在 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")
)
4

1 回答 1

0

使用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
于 2019-12-04T16:45:37.287 回答