我在 R 中使用 plyr 包来执行以下操作:
- 根据A列和B列从表A中取出一行
- 从表 B 中找到在 A 列和 B 列中具有相同值的行
- 将 C 列从表 B 复制到表 A
我已经制作了进度条来显示进度,但是在它显示到 100% 之后它似乎仍在运行,因为我看到我的 CPU 仍然被 RGUI 占用,但它并没有结束。
我的表 A 有大约 40000 行数据,具有唯一的 A 列和 B 列。
我怀疑 plyr 中“split-conquer-combine”工作流程的“combine”部分无法处理这 40000 行数据,因为我可以为另一个具有 4000 行数据的表执行此操作。
有什么提高效率的建议吗?谢谢。
更新
这是我的代码:
for (loop.filename in (1:nrow(filename)))
{print("infection source merge")
print(filename[loop.filename, "table_name"])
temp <- get(filename[loop.filename, "table_name"])
temp1 <- ddply(temp,
c("HOSP_NO", "REF_DATE"),
function(df)
{temp.infection.source <- abcde[abcde[,"Case_Number"]==unique(df[,"HOSP_NO"]) &
abcde[,"Reference_Date"]==unique(df[,"REF_DATE"]),
"Case_Definition"]
if (length(temp.infection.source)==0) {
temp.infection.source<-"NIL"
} else {
if (length(unique(temp.infection.source))>1) {
temp.infection.source<-"MULTIPLE"
} else {
temp.infection.source<-unique(temp.infection.source)}}
data.frame(df,
INFECTION_SOURCE=temp.infection.source)
},
.progress="text")
assign(filename[loop.filename, "table_name"], temp1)
}