R语言指定levels与ordered=TRUE后有序因子排序异常求助
解决有序因子排序异常的问题
问题根源
你在dplyr::mutate()里用了<-赋值,这不会将新生成的有序因子列写入data_ordered,data_ordered$mocc仍然是原数据中的列。后续调用ordered(data_ordered$mocc)时,是对原列进行默认排序,才出现了3 < 2 < 1 < 0的反向层级。
修正后的代码
将mutate里的<-替换为=,才能正确生成目标有序因子列:
data_ordered <- data %>% mutate( mocc = factor(mocc, levels = c("0", "1", "2", "3"), ordered = TRUE) ) # 直接查看层级即可,无需再调用ordered() levels(data_ordered$mocc)
额外说明
- 只要在
factor()中指定了levels和ordered=TRUE,生成的列已经是有序因子,不需要再用ordered()二次处理。 - 如果原
mocc列是数值型,指定字符串格式的levels(如"0")也能正常匹配,不会产生缺失值;如果原列是字符型,直接按指定levels排序即可。
内容的提问来源于stack exchange,提问作者m45ha
相关产品推荐
相关产品推荐

