我有一个变量,表明工业部门的价值在1-100之间;这些扇区可以不规则的间隔分为20个宏扇区(例如1-5->扇区_1、6-12->扇区_2 ...)。
在第二个变量中转换第一个变量的最有效方法是什么?
我正在考虑使用以下功能,但是该解决方案并不十分有效且有点难看:
index <- function(x) {
if (x<= 5){
x <- "Sector_1"
}
if (x>5 & x<=12){
x <- "Sector_3"
}
return(x)
}
答案 0 :(得分:0)
如@ r2evans所建议,请使用cut
。这是您遇到问题时可以重现的示例:
set.seed(1) #make results reproducible.
sector <- data.frame(mini.sector = seq(1,10,1), value = round(runif(10, 1, 100), 0))
#name macro sectors as 'a', 'b', 'c' and 'n' and assign them to micro sectors based on defined value cuts.
sector$macro.sector <- cut(sector$value, c(-Inf, 10, 25, 50, Inf), labels=c("a", "b", "c", "n"))
head(sector) #show first five row from data frame 'sector'.
mini.sector value macro.sector
1 27 c
2 38 c
3 58 n
4 91 n
5 21 b
6 90 n