Группировка числовых значений по категориям в R? - PullRequest
0 голосов
/ 09 января 2019

У меня есть переменная, указывающая промышленные сектора, принимающие значения в диапазоне от 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)
}

1 Ответ

0 голосов
/ 17 февраля 2019

Как подсказывает @ 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
...