0

我有一列包含 17000 个值的列,我想按它们的范围将它们分为 48 个组(将 SIC 代码分类为 Fama French 行业)。

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 回答