首页 > 解决方案 > 直接在一个因子上使用 case_when

问题描述

我想不出一些简单的方法来做这个简单的事情:

我有一个变量age_cl,它是一个以年龄为类的因子对象。

如果我想合并两个级别,我会轻松地使用forcats::fct_collapse.

但是,现在我想将一个级别拆分为两个不同的级别(例如,“25-34”级别使用初始整数age变量有条件地拆分为“25-29”和“30-34”)。

我在 forcats 中找不到任何等效项,因此我想使用一个标准case_when,但它只需要字符向量作为输入......

有人对此有任何想法吗?

非常感谢

标签: rdplyrfactors

解决方案


你考虑过cut吗?您可以为其放置自定义中断和标签。

breaks <- c(24, 29, 34)
labels <- paste(breaks[-length(breaks)] + 1, breaks[-1], sep = '-')
labels
#[1] "25-29" "30-34"

transform(df, age_cl = cut(age, breaks, labels))

#   age age_cl age_cl_expected
#1   25  25-29           25-29
#2   26  25-29           25-29
#3   27  25-29           25-29
#4   28  25-29           25-29
#5   29  25-29           25-29
#6   30  30-34           30-34
#7   31  30-34           30-34
#8   32  30-34           30-34
#9   33  30-34           30-34
#10  34  30-34           30-34

推荐阅读