如何为因子水平分配值?

时间:2020-05-10 13:25:25

标签: r

我想将值分配给因子水平。
例如,如果> 22 =成熟,如果<= 22 =青春期。我怎样才能做到这一点?我的数据是:

 x <- factor(c(13, 18, 35), levels = c("adolescence", "mature"))

2 个答案:

答案 0 :(得分:4)

仅使用Base R,这是一个两步过程。

假设您的初始向量是数字而不是字符串(如上所示),请使用cut函数定义初始因子等效项。
然后,使用factor函数中的“标签”选项来重命名因子水平。

factor(cut(c(13, 18, 35), breaks=c(0, 22, Inf)), labels = c("adolescence", "mature"))
#[1] adolescence adolescence mature     
#Levels: adolescence mature


编辑
根据Ben的评论,一种简化的方法是将标签直接添加到cut函数:

cut(c(13, 18, 35), breaks=c(0, 22, Inf), labels = c("adolescence", "mature"))

答案 1 :(得分:4)

几种选择:

如果您的数据是

x <- c(13, 18, 35)

然后

factor(ifelse(x<=22, "adolescence", "mature"))
## [1] adolescence adolescence mature     
## Levels: adolescence mature
factor(ifelse(x %in% c(13,18), "adolescence", "mature"))
## [1] adolescence adolescence mature     
## Levels: adolescence mature

如果您已经有一个因子,则可以通过as.numeric(as.character(x))将它们转换回整数,或者使用car::recode()forcats::fct_collapse