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

基于计数筛选因子变量:处理房价数据中的sub_area字段

解决方法:保留样本,替换低频次sub_area为NA

这需求太常见了!既要保留所有房产的其他变量数据,又要剔除那些只有1个观测的sub_area水平、避免冗余计算,下面给你两种实用的R实现方案:

方案一:基础R代码(无需额外包)

先计算每个sub_area的观测数,再定位并替换低频次区域:

# 计算每个sub_area的计数
sub_area_counts <- table(df$sub_area)
# 筛选出只有1个观测的区域
low_count_areas <- names(sub_area_counts)[sub_area_counts == 1]
# 将这些区域的sub_area值替换为NA
df$sub_area[df$sub_area %in% low_count_areas] <- NA

方案二:dplyr管道式写法(更简洁)

如果你习惯用tidyverse系列工具,用dplyr的分组计算可以一步到位:

library(dplyr)

df <- df %>%
  group_by(sub_area) %>%
  # 当分组内观测数为1时,把sub_area设为NA,否则保留原值
  mutate(sub_area = if_else(n() == 1, NA_character_, sub_area)) %>%
  ungroup()

关键注意点

  • 推荐用NA而非空白字符串:空白字符串会被当作一个新的factor水平,反而可能增加不必要的计算;而NA在后续lm()回归中会被自动处理——样本不会被删除,只是该sub_area变量的这个观测被标记为缺失,完全不影响beds、baths等其他变量的使用。
  • 处理后你可以直接运行目标回归:lm(price ~ beds + baths + city + sub_area),R会自动忽略sub_area为NA的观测对该变量的贡献,但保留这些样本的其他特征参与建模。

内容的提问来源于stack exchange,提问作者Macter

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 06:46:14