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

将数值分组到R中的类别中?,r,function,dataframe,variables,grouping,R,Function,Dataframe,Variables,Grouping,我有一个变量,表明工业部门的价值在1-100之间;这些扇区可以按不规则的间隔分成20个宏扇区(例如1-5->sector_1,6-12->sector_2…) 在第二个变量中转换第一个变量最有效的方法是什么 我正在考虑以下功能,但解决方案不是很有效,而且有点难看: index <- function(x) { if (x<= 5){ x <- "Sector_1" } if (x>5 & x<=12){ x <- "Sect

我有一个变量,表明工业部门的价值在1-100之间;这些扇区可以按不规则的间隔分成20个宏扇区(例如1-5->sector_1,6-12->sector_2…)

在第二个变量中转换第一个变量最有效的方法是什么

我正在考虑以下功能,但解决方案不是很有效,而且有点难看:

index <- function(x) {
  if (x<= 5){
    x <- "Sector_1"
  }
  if (x>5 & x<=12){
    x <- "Sector_3"
  }
return(x)
}

index按照@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
set.seed(1)#使结果可重复。

我建议的扇区,例如,
cut(x,c(-Inf,5,12,Inf),labels=c(“扇区1”,“扇区3”,“扇区n”))
。另请参见。‘Cut’非常有效!