如何从一个源文件中查找许多大型data.frames / data.tables中的匹配项?

时间:2016-08-12 23:15:27

标签: r database merge data.table lapply

我是一个有点新手的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中的所有案例都匹配pidpkid到“master”以获得相应的pha

我提出的唯一方法是悲惨的手动,并且需要很长时间才能写出来,而且无疑是非常低效的。

res1<-data.table::merge(master,dt1)
res2<-data.table::merge(master,dt2)
l=list(res1,res2)
final<-rbindlist(l)

有什么想法?谢谢!

0 个答案:

没有答案