根据R中的范围分配行业代码

时间:2014-02-28 14:44:30

标签: r dataframe

我想将整个行业/家长代码分配到包含更详细/子代码的data.framedf下方)(下面称为ChildCodes)。以下数据用于说明包含详细代码的data.frame:

> df <- as.data.frame(cbind(c(1,2,3,4,5,6),c(110,101,200,2041,3651,2102)))
> names(df) <- c('Id','ChildCodes')
> df
  Id ChildCodes
1  1        110
2  2        101
3  3        200
4  4       2041
5  5       3651
6  6       2102

行业/家长代码位于此处的.csv文件中:https://www.dropbox.com/s/5qtb7ysys1ar0lj/IndustryCodes.csv

我遇到的问题是.csv文件的格式。该文件显示第1列中的父/行业代码以及后2列中的子/详细代码范围。这是一个子集:

> IndustryCodes <- as.data.frame(cbind(c(1,1,2,5,6),c(100,200,2040,2100,3650),c(199,299,2046,2199,3651)))
> names(IndustryCodes) <- c('IndustryGroup','LowerRange','UpperRange')
> IndustryCodes
  IndustryGroup LowerRange UpperRange
1             1        100        199
2             1        200        299
3             2       2040       2046
4             5       2100       2199
5             6       3650       3651

因此ChildCode 110对应行业组1,2041与行业代码2等。如何最好地将行业/父代码(IndustryGroup)分配给R中的df

谢谢!

1 个答案:

答案 0 :(得分:3)

您可以使用sapply获取每个子代码的行业代码:

sapply(df$ChildCodes, 
       function(x) IndustryCodes$IndustryGroup[IndustryCodes$LowerRange <= x & 
                                               x <= IndustryCodes$UpperRange])
# [1] 1 1 1 2 6 5