将数字分组到R中的类别中?

时间:2019-01-09 16:43:07

标签: r function dataframe variables grouping

我有一个变量,表明工业部门的价值在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)
}

1 个答案:

答案 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