Język R: problemy z obliczaniem „grupuj” lub dzielone z pakietem ff

Jestem prawie nowy w R, więc przepraszam, jeśli zadam kilka podstawowych pytań, ale nie mogę znaleźć rozwiązania tego „prostego” problemu: mając bazę danych (duży, 25 milionów wierszy, 14 kolumn) pacjentów, mam kilka wiersze dla każdego „id”, na przykład dla tej struktury:

"id" "birth_date"  "treatment"  "date_treatment"
123   2002-01-01    2            2011-01-03
123   2002-01-01    3            2011-10-03
124   2002-01-01    6            2009-11-07
124   2002-01-01    NA           NA
...   .....         ......       ........ 
1022  2007-01-01    4            2011-01-06

Muszę użyć pakietu ff, aby móc pracować z małą ilością pamięci RAM, więc WSZYSTKIE procesy powinny być w funkcjach ff. I chcę wiedzieć, dla każdego pojedynczego „id”, który jest minimalnym „wiekiem”, kiedy otrzymywał leczenie = 2 lub 4. tak, to byłoby, wkażdy pojedynczy identyfikator, w kodzie ogólnym:

if (leczenie w c (2,4)), a następnie min (date_treatment - data_rodziny)

Chcę tylko zachować te minimalne dane „wieku” i być może identyfikatory.

Jedno rozwiązanie to zrobić:

age_c <- (data$date_treatment - data$birth_date)/365.25;
data$age_c <- age_c;
idx <- ffwhich( data, treatment %in% c(2,4) );
result  <- data[idx,];

Dzięki temu cały proces przebiega w formacie ff i nie występują problemy z pamięcią, ale ... Nadal muszę znaleźć sposób na przyjęcie tych minimalnych wartości dla każdego identyfikatora ... ffdfdply wydaje się być w stanie to zrobić:

age_fun <- function(x){ 
  min_ <- min.ff(x$age_c); 
  data.frame( age = min_);  
}

 result2 <- ffdfdply(x = data,
               split = data$id,
               FUN = function(x) age_fun(x),
               BATCHBYTES = 5000,
               trace=TRUE
 ); 

Co zajmuje trochę czasu, a także daje mi wiele różnych błędów ....

Jakieś rozwiązanie?
Jest to ogólny problem, który w SAS lub SQL jest łatwy do wykonania, ale nie znajduję odpowiedniej kombinacji w R. Więc pytanie ogólne brzmi:

jak obliczyć funkcje wiersza-kolumny dla identycznych wartości (grup) zmiennej (wiersza) w bardzo dużych zestawach danych?

Dzięki !!

questionAnswers(1)

yourAnswerToTheQuestion