You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 09:05:37