我有一个包含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
您是否知道执行此任务的方法较少?
非常感谢!
答案 0 :(得分: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并解压缩表)并以编程方式查找断点。