如何在R语言中移除因子变量中无观测值的类别?
移除因子变量中的空类别解决方案
你的代码问题
mutate是dplyr包中用于数据框新增/修改列的函数,不能直接作用在单个因子变量上droplevels()的参数应该是整个因子对象,不是单独的水平名称(比如Grass)
正确的解决方法
不需要额外创建数据框,直接处理数据框里的floor_type_draft列即可,有两种常用方式:
方式1:自动移除所有无观测的因子水平
直接调用droplevels()处理该因子列,它会自动剔除所有没有对应观测的水平:
Data_Analysis$floor_type_draft <- droplevels(Data_Analysis$floor_type_draft)
执行后再用summary(Data_Analysis$floor_type_draft)查看,Grass就会消失。
方式2:手动指定保留的因子水平
如果你只想移除Grass这一个水平(比如担心其他潜在空水平被误删),可以用factor()重新定义水平:
Data_Analysis$floor_type_draft <- factor(Data_Analysis$floor_type_draft, levels = c("Carpet", "Clay", "Hard"))
验证结果
执行完上述任意一种方法后,运行summary(Data_Analysis$floor_type_draft),输出应该是:
Carpet Clay Hard 1621 9245 10328
内容的提问来源于stack exchange,提问作者José Ferreira
相关产品推荐
相关产品推荐

