我的数据看起来像这样。我现在要做的是使用第二个表中的匹配值替换“旧ID”值:第一个表是这个,
Old ID | Usage
211 25
211 17
211 18
202 11
202 12
194 17
202 16
194 22
194 84
198 26
具有匹配值的第二个表
Old ID | ID
211 abf
202 rdg
194 ufe
198
在使用第二个表中的相应值替换旧ID中的每个值后,应更改第一个表。如果ID列中的值丢失或“NULL”,则第一个表中的替换值应显示为“N / A”第一个表现在应该如下所示,
Old ID | Usage
abf 25
abf 17
abf 18
rdg 11
rdg 12
ufe 17
rdg 16
ufe 22
ufe 84
n/a 26
我有大约200万条这样的条目。非常感谢您的帮助
答案 0 :(得分:0)
这样的东西?
PM> Install-Package Microsoft.EntityFrameworkCore.Relational -Version 1.1.2
答案 1 :(得分:0)
首先合并两个表,然后删除重复项,如下所示:
S=merge(df1,df2,by="Old_ID")
S[!duplicated(S),c(3,2)]
ID Usage
1 ufe 17
4 ufe 22
7 ufe 84
10 <NA> 26
11 rdg 11
14 rdg 12
17 rdg 16
20 abf 25
23 abf 17
26 abf 18
答案 2 :(得分:0)
这可以通过更新加入来解决:
library(data.table)
setDT(DT1)[setDT(DT2), on = "Old_ID", Old_ID := ID][]
Old_ID Usage 1: abf 25 2: abf 17 3: abf 18 4: rdg 11 5: rdg 12 6: ufe 17 7: rdg 16 8: ufe 22 9: ufe 84 10: NA 26
DT1 <- structure(list(Old_ID = c("abf", "abf", "abf", "rdg", "rdg",
"ufe", "rdg", "ufe", "ufe", NA), Usage = c("25", "17", "18",
"11", "12", "17", "16", "22", "84", "26")), .Names = c("Old_ID",
"Usage"), row.names = c(NA, -10L), class = c("data.table", "data.frame"))
DT2 <- structure(list(Old_ID = c("211", "202", "194", "198"), ID = c("abf",
"rdg", "ufe", NA)), .Names = c("Old_ID", "ID"), row.names = c(NA,
-4L), class = c("data.table", "data.frame"))