Я хочу выполнить вычисления для каждого номера компании в столбце 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, оба из которых мне не нравятся). Т понять). Есть предложения?