【问题标题】:Recode a range of values into one number using 'recode()' in tidyverse使用 tidyverse 中的“recode()”将一系列值重新编码为一个数字
【发布时间】:2020-11-02 21:21:51
【问题描述】:

我正在处理一个非常混乱的数据集,我需要在管道中使用 recode() 函数将数字 0:30 转换为四个数字类别(0、1、2、3、4)。

我有什么:

recode(var, 10:30 = 4,
              6:9 = 3,
              3:5 = 2,
              1:2 = 1,
              0 = 0))

非常感谢任何帮助!

【问题讨论】:

    标签: r tidyverse recode


    【解决方案1】:

    case_when 可能会更容易

    library(dplyr)
    case_when(var %in% 10:30 ~ 4,
                   var %in% 6:9 ~ 3, 
                   var %in% 3:5 ~ 2,
                   var %in% 1:2 ~ 1, 
                    var == 0 ~ 0)
    

    或者另一个选项是cut

    as.integer(cut(var, breaks = c(-Inf, 0, 2, 5, 9, 30, Inf)))
    

    注意:更改cut 中的include.lowestright 选项以进行调整

    数据

    set.seed(24)
    var <- sample(0:35, 50, replace = TRUE)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-08
      • 1970-01-01
      相关资源
      最近更新 更多