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

R语言如何匹配字符串新增标识列,生成回归分析用虚拟变量

R语言房产特征文本清洗与虚拟变量生成方案

针对63000行房产网站爬取数据集的特征列处理需求,适配特征价格法(Hedonic Pricing Method)研究要求,全流程实现文本解析、特征归一、归类合并、虚拟变量生成,代码可直接复用运行。

第一步:原始文本预处理

原始特征列存在JSON转义符、爬取乱码、混合存储格式(既有数组拆分的独立特征,也有逗号拼接在同一字符串内的多特征)问题,先做统一清洗:

  • 全量文本转小写,消弭大小写差异
  • 修复爬取产生的编码乱码,去除无效特殊符号
  • 统一做词形还原,合并单复数、不同时态的同根词
  • 拆分所有嵌套、拼接的特征,展平为单个特征条目
# 加载所需依赖包
library(tidyverse)
library(jsonlite)
library(textstem)

clean_df <- raw_df %>%
  mutate(
    # 去除特征字符串首尾的括号,解析JSON格式数组
    feature_list = map(feature_col, ~fromJSON(gsub("^\\(|\\)$", "", .x))),
    feature_flat = map(feature_list, function(feat_vec){
      feat_vec %>%
        tolower() %>%
        # 修复爬取乱码(如â\200\231类编码错误的引号)
        gsub("â\200\231|â\u0080\u0099", "'", .) %>%
        # 拆分逗号拼接的多特征条目
        str_split(",\\s*") %>%
        unlist() %>%
        # 去除前后空格、无效特殊字符
        str_trim() %>%
        gsub("[^a-z0-9\\s/-]", "", .) %>%
        # 词形还原,统一单复数、时态差异
        lemmatize_strings() %>%
        # 过滤空值
        discard(~.x == "")
    })
  )

第二步:特征归类规则配置

通过自定义归类字典实现同类别特征合并,字典键为最终生成的虚拟变量列名,值为该类别下需要匹配的特征关键词。可根据研究需求持续补全规则,实现全量特征覆盖:

# 房产特征归类字典示例,可按需扩展
feature_dict <- list(
  seaside_location = c("seaside location", "sea view", "coastal location"),
  security_system = c("emergency call", "video entry", "intruder alarm", "fire detection", "secure entry"),
  garden_terrace = c("garden", "landscaped garden", "terrace", "outdoor seating"),
  balcony = c("balcony", "walk out balcony"),
  parking = c("parking", "car port", "resident parking", "parking space", "on street parking"),
  wheelchair_access = c("wheelchair access", "disabled access"),
  lift = c("lift to floor", "elevator"),
  rural_village_location = c("village location", "rural", "secluded"),
  bedroom_count = c("bedroom"),
  central_heating = c("central heating"),
  double_glazing = c("double glazing"),
  fireplace = c("fireplace"),
  shared_lounge = c("lounge", "common room")
)

快速补全覆盖特征的技巧:先对所有清洗后的展平特征做词频统计,把高频特征全部纳入归类字典即可,统计代码为table(unlist(clean_df$feature_flat)) %>% sort(decreasing = T)

第三步:批量生成0/1虚拟变量

遍历归类字典,逐行匹配房源特征,生成取值为0/1的虚拟变量:1代表房源包含对应类别的特征,0代表不包含,生成结果可直接输入回归模型使用。

# 批量生成虚拟变量
for (feat_name in names(feature_dict)) {
  match_pattern <- paste(feature_dict[[feat_name]], collapse = "|")
  clean_df[[feat_name]] <- map_dbl(
    clean_df$feature_flat,
    ~as.numeric(any(str_detect(.x, match_pattern)))
  )
}

方案适配说明

  • 词形差异兼容:全小写转换+词形还原步骤自动处理parking/Parking/parkings这类同特征不同写法的问题,不会出现同特征拆分多列的错误
  • 混合格式兼容:同时支持数组独立存储、逗号拼接存储的两类特征格式,不会出现解析遗漏
  • 扩展性强:仅需在归类字典中补充键值匹配规则即可新增特征维度,配合词频统计可快速覆盖全部爬取到的房产特征,满足特征价格法的变量完备性要求
  • 性能达标:63000行规模的数据在普通消费级笔记本上运行耗时不超过20秒,无性能瓶颈

内容的提问来源于stack exchange,提问作者Lucy Kingwell-Meader

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 12:27:08