2014-02-28 61 views
1

我希望將包含更詳細/子代碼(以下稱爲ChildCodes)的整個行業/父母代碼分配到data.frame(下面的df)。以下數據足以說明包含詳細的代碼我data.frame:根據R中的範圍分配行業代碼

> 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列中顯示父/行業代碼,並在下兩列中顯示子代/代碼的範圍。這裏是一個子集:

> 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等如何最好R中分配行業/父碼(IndustryGroup)至df

謝謝!

回答

3

您可以使用sapply讓每一個孩子代碼行業代碼:

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