次の識別子、rscore、gvkey、sic2、year、および cdom を含むデータ セットがあります。私がやろうとしているのは、特定の gvkey のすべての時間スパン (~1500) の合計 rscores に基づいてパーセンタイル ランクを計算し、次に gvkey に基づいて特定の時間スパンと sic2 でパーセンタイル ランクを計算することです。
すべての時間スパンのパーセンタイルを計算するのはかなり迅速なプロセスですが、sic2 パーセンタイル ランクの計算を追加するとかなり遅くなりますが、合計で約 65,000 のサブセットを調べている可能性があります。このプロセスをスピードアップする可能性があるかどうか疑問に思っています。
1 つの時間スパンのデータは次のようになります。
gvkey sic2 cdom rscoreSum pct
1187 10 USA 8.00E-02 0.942268617
1265 10 USA -1.98E-01 0.142334654
1266 10 USA 4.97E-02 0.88565478
1464 10 USA -1.56E-02 0.445748247
1484 10 USA 1.40E-01 0.979807985
1856 10 USA -2.23E-02 0.398252565
1867 10 USA 4.69E-02 0.8791019
2047 10 USA -5.00E-02 0.286701209
2099 10 USA -1.78E-02 0.430915371
2127 10 USA -4.24E-02 0.309255308
2187 10 USA 5.07E-02 0.893020421
業界ランクを計算するコードは以下のとおりで、かなり単純です。
#generate 2 digit industry SICs percentile ranks
dout <- ddply(dfSum, .(sic2), function(x){
indPct <- rank(x$rscoreSum)/nrow(x)
gvkey <- x$gvkey
x <- data.frame(gvkey, indPct)
})
#merge 2 digit industry SIC percentile ranks with market percentile ranks
dfSum <- merge(dfSum, dout, by = "gvkey")
names(dfSum)[2] <- 'sic2'
プロセスをスピードアップするための提案をいただければ幸いです。