0

17000 の値の列があり、その範囲によって 48 のグループに分類したいと考えています (SIC コードを Fama フランスの産業に分類します)。

df$SIC
[1] 5080 4911 7359 2834 3674 6324 2810 4512 4400 6331 3728 3350 2911 2085 7340 6311 6199 6321 2771 3844 2870 3823 2836 3825

これを行う唯一の方法は、一連の if then ステートメントを記述し、それらすべてを for ループに入れることです。ただし、これを実行するには永遠に時間がかかります。

for(i in c(1:(dim(df)[1])){
if(df$SIC[i] >= 0100 && df$SIC[i] <= 0299){df$FF_IND <- "AGRI"}
}
## and so on for all groups

このタスクを実行する負担の少ない方法を知っていますか?

どうもありがとう!

4

1 に答える 1

1

何かのようなもの:

cut(df$SIC,breaks=c(100,299,...),labels=c("AGRI",...))

より徹底的な解決策 (今は時間がありません) では、http://boards.fool.com/famafrench-industry-codes-26799316.aspx (http://mba.tuck をダウンロード) で見つかったテーブルを抽出ます.dartmouth.edu/pages/faculty/ken.french/ftp/Siccodes49.zipとテーブルの抽出) とプログラムでブレークポイントを見つけます。

于 2013-06-01T20:21:54.027 に答える