在 tidyverse 中使用 'recode()' 将一系列值重新编码为一个数字
Recode a range of values into one number using 'recode()' in tidyverse
我正在处理一个非常混乱的数据集,我需要在管道中使用 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, 0, 2, 5, 9, 30, Inf)))
注意:更改 cut
中的 include.lowest
和 right
选项以调整
数据
set.seed(24)
var <- sample(0:35, 50, replace = TRUE)
我正在处理一个非常混乱的数据集,我需要在管道中使用 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, 0, 2, 5, 9, 30, Inf)))
注意:更改 cut
中的 include.lowest
和 right
选项以调整
数据
set.seed(24)
var <- sample(0:35, 50, replace = TRUE)