使用 tidyverse 中的“recode()”将一系列值重新编码为一个数字

问题描述 投票:0回答:2

我正在处理一个非常混乱的数据集,我需要在管道中使用 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
2个回答
2
投票

使用

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)))

注意:更改

include.lowest
中的
right
cut
选项进行调整

数据

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

0
投票

冒号对我不起作用,所以我最终找到了另一个解决方案: 情况_当( 变量==0~0, 之间(var, 10, 30) ~ 4, 之间(var, 6, 9) ~ 3, 之间(var, 3, 5) ~ 2, 之间(var, 1, 2) ~ 1 ))

© www.soinside.com 2019 - 2024. All rights reserved.