我想将值分配给因子水平。
例如,如果> 22 =成熟,如果<= 22 =青春期。我怎样才能做到这一点?我的数据是:
x <- factor(c(13, 18, 35), levels = c("adolescence", "mature"))
答案 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