Я использую пакет plyr в R для следующих действий:
- выбрать строку из таблицы A согласно столбцу A и столбцу B
- найти строку из таблицы B, имеющую одинаковое значение в столбце A и столбце B
- скопировать столбец C из таблицы B в таблицу A
Я сделал индикатор выполнения, чтобы показать прогресс, но после того, как он показывает 100%, он, кажется, все еще работает, поскольку я вижу, что мой процессор все еще занят RGUI, но он просто не заканчивается.
В моей таблице A содержится около 40000 строк данных с уникальным столбцом A и столбцом B.
Я подозреваю, что часть "комбинирования" рабочего процесса "split-conquer-объединить" в plyr не может обработать эти 40000 строк данных, потому что я могу сделать это для другой таблицы с 4000 строками данных.
Есть предложения по повышению эффективности? Спасибо.
UPDATE
Вот мой код:
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)
}