R 在查找表中使用多个参考值

R 在查找表中使用多个参考值,r,data.table,R,Data.table,使用R中的data.table,我有两个数据表。一个是我的实际数据集,另一个是查找表 数据集: dt <- data.table(Name = c("John", "Bob", "Sue", "Trish"), Ref = c("a", "A0", "BA", "c")) **Name** **Ref** John a Bob A0 Sue BA Trish c dt也许您可以首先熔化查找表,将所有引用都放

使用R中的data.table,我有两个数据表。一个是我的实际数据集,另一个是查找表

数据集:

dt <- data.table(Name = c("John", "Bob", "Sue", "Trish"), Ref = c("a", "A0", "BA", "c"))

**Name**    **Ref**  
John        a  
Bob         A0  
Sue         BA  
Trish       c

dt也许您可以首先熔化查找表,将所有引用都放在一列中,并将相应的值放在它们旁边,然后合并数据表

newlookup=melt(lookup,id.vars="Value")
setnames(newlookup, c("Value", "oldRef", "Ref"))
merge(dt,newlookup,by="Ref")
dt1 <- dt[dt[, nchar(Ref) == 2,],]
dt2 <- dt[dt[, nchar(Ref) == 1,],]

setnames(lookup, c("Ref1", "Ref", "Value"))
setkey(lookup, Ref)

dt1Merged <- merge(dt1, lookup, by = "Ref")[,c(1:2, 4), with = F]

setnames(lookup, c("Ref", "Ref2", "Value"))
setkey(lookup, Ref)

dt2Merged <- merge(dt2, lookup, by = "Ref")[,c(1:2, 4), with = F]

result <- rbind(dt1Merged, dt2Merged)
newlookup=melt(lookup,id.vars="Value")
setnames(newlookup, c("Value", "oldRef", "Ref"))
merge(dt,newlookup,by="Ref")