使用tidyverse中的“ recode”将值范围重新编码为一个数字 数据

问题描述

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

我所拥有的:

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

非常感谢您的帮助!

解决方法

使用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,2,5,9,30,Inf)))

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

数据

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