我想将整个行业/家长代码分配到包含更详细/子代码的data.frame
(df
下方)(下面称为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
?
谢谢!
答案 0 :(得分:3)
您可以使用sapply获取每个子代码的行业代码:
sapply(df$ChildCodes,
function(x) IndustryCodes$IndustryGroup[IndustryCodes$LowerRange <= x &
x <= IndustryCodes$UpperRange])
# [1] 1 1 1 2 6 5