изучая, как вычислять задачи в R для больших наборов данных (более 1 или 2 ГБ), я пытаюсь использовать пакет ff
и функцию ffdfdply
. (См. эту ссылку о том, как использовать ffdfdply
: Язык R: проблемы с вычислениями сгруппированы или разделены с помощью пакета ff )
Мои данные имеют следующие столбцы:
"id" "birth_date" "diagnose" "date_diagnose"
Для каждого «id» есть несколько строк, и я хочу извлечь первую дату, когда был поставлен диагноз.
Я бы применил это:
library(ffbase)
library(plyr)
load(file=file_name); # to load my ffdf database, called data.f .
my_fun <- function(x){
ddply( x , .(id), summarize,
age = min(date_diagnose - birth_date, na.rm=TRUE))
}
result <- ffdfdply(x = data.f, split = data.f$id,
FUN = function(x) my_fun(x) , trace=TRUE) ;
result[1:10,] # to check....
Очень странно, но эта команда: ffdfdply(x = data.f, .... )
приводит к сбою RStudio (и R). Иногда одна и та же команда вызывает сбой R, а иногда нет. Например, если я снова запущу строку ffdfdply
(которая сработала в первый раз), R рухнет.
Использование других функций, данных и т. д. будет иметь тот же эффект. В log.txt нет увеличения памяти или чего-либо еще. Такое же поведение при применении сводки по "технике"....
Так что, если у кого-то есть такая же проблема и нашел решение, это было бы очень полезно. Кроме того, ffdfdply
работает очень медленно (медленнее, чем SAS...), и я думаю о создании другой стратегии для выполнения таких задач.
Учитывает ли ffdfdply
, что, например, набор данных упорядочен по идентификатору? (поэтому не нужно просматривать все данные, чтобы получить одинаковые идентификаторы...).
Итак, если кто-нибудь знает другие подходы к этой проблеме ddply
, это было бы действительно здорово для всех пользователей «больших наборов данных в R с малой оперативной памятью».
Это мой sessionInfo()
R version 2.15.2 (2012-10-26)
Platform: i386-w64-mingw32/i386 (32-bit)
locale:
[1] LC_COLLATE=Danish_Denmark.1252 LC_CTYPE=Danish_Denmark.1252
[3] LC_MONETARY=Danish_Denmark.1252 LC_NUMERIC=C
[5] LC_TIME=Danish_Denmark.1252
attached base packages:
[1] tools stats graphics grDevices utils datasets methods
[8] base
other attached packages:
[1] plyr_1.7.1 ffbase_0.6-1 ff_2.2-10 bit_1.1-9