我是一个有点新手的R用户,我想知道如何自动查找匹配的行(例如,内部联接合并),从一个“主”data.table跨多个,大(意味着~8 GB文件)数据。表格,并将这些比赛放在一个决赛桌中。
“master”data.table有两列,如下所示:
pid pkid
123 8975A
456 9683
虽然多个更大的data.tables看起来像这样:
pid pkid pha
123 8975A 3
456 9683 2
789 1253 3
我的代码设置为从一个目录中读取所有特殊分隔文件,设置data.table合并的密钥,并从文件中创建名称:
temp = list.files(pattern="*.txt")
list2env(
lapply(setNames(temp, make.names(gsub("*.txt$", "", temp))),
fread,sep="|",setkey(packageid,patientid)), envir = .GlobalEnv)
我遇到的问题是如何从一个“master”data.table中自动化众多(40个东西?)合并,并将许多合并中的所有匹配转储到单独的data.table中。基本上,我希望更大的data.tables中的所有案例都匹配pid
和pkid
到“master”以获得相应的pha
。
我提出的唯一方法是悲惨的手动,并且需要很长时间才能写出来,而且无疑是非常低效的。
res1<-data.table::merge(master,dt1)
res2<-data.table::merge(master,dt2)
l=list(res1,res2)
final<-rbindlist(l)
有什么想法?谢谢!