Выполнение расчетов по подмножествам данных в R

Я хочу выполнить вычисления для каждого номера компании в столбце PERMNO моего фрейма данных, сводку которого можно можно увидеть здесь:

> summary(companydataRETS)
     PERMNO           RET           
 Min.   :10000   Min.   :-0.971698  
 1st Qu.:32716   1st Qu.:-0.011905  
 Median :61735   Median : 0.000000  
 Mean   :56788   Mean   : 0.000799  
 3rd Qu.:80280   3rd Qu.: 0.010989  
 Max.   :93436   Max.   :19.000000  

Мое решение до сих пор состояло в том, чтобы создать переменную со всеми возможными номерами компаний

compns <- companydataRETS[!duplicated(companydataRETS[,"PERMNO"]),"PERMNO"]

А затем использовать цикл foreach с использованием параллельных вычислений, которые вызывают мою функцию get.rho(), которая, в свою очередь, выполняет нужные вычисления

rhos <- foreach (i=1:length(compns), .combine=rbind) %dopar% 
      get.rho(subset(companydataRETS[,"RET"],companydataRETS$PERMNO == compns[i]))

Я протестировал его на подмножестве своих данных, и все работает. Проблема в том, что у меня 72 миллиона наблюдений, и даже после того, как я оставил компьютер работать на ночь, он все еще не закончился.

Я новичок в R, поэтому я полагаю, что структура моего кода может быть улучшена, и есть лучший (более быстрый и менее требовательный к вычислениям) способ выполнения той же задачи (возможно, с использованием apply или with, оба из которых мне не нравятся). Т понять). Есть предложения?

5
задан Arun 28 March 2013 в 09:00
поделиться