R语言如何模糊查找关键词并重编码非标准化人口统计数据
R语言非标准化分类字段重编码方案
适用场景
该方案可解决多源上报数据的文本分类统一问题,通过核心关键词匹配无需枚举所有异常上报值,即可完成字段的标准化重编码,适配10余个学区人口统计数据的清洗需求。
示例原始数据
df_original <- data.frame( Race = c( "Native Hawaiian or Other Pacific Islander", "Native Hawaiian/Pacific Islander", "Native Hawaiian or Pacific Islander", "Black or African American", "Black", "Black/African American" ) )
实现方案
方案1:基础R实现(无需加载第三方包)
核心使用grepl()函数做关键词模糊匹配,匹配到指定关键词后直接赋值为标准值:
# 可直接覆盖原Race字段,也可新增单独的清洗后字段 df_original$Race <- ifelse( grepl("Pacific", df_original$Race), "Native Hawaiian - Pacific Islander", ifelse( grepl("Black", df_original$Race), "Black - African American", df_original$Race ) )
如果上报数据存在大小写不统一的情况,可在grepl()中添加ignore.case = TRUE参数兼容大小写差异。
方案2:dplyr实现(更适合多分类规则扩展)
如果后续需要添加更多种族分类的标准化规则,用dplyr的case_when()语法可读性和扩展性更强:
library(dplyr) df_clean <- df_original %>% mutate( Race = case_when( # 匹配含Pacific的取值 grepl("Pacific", Race) ~ "Native Hawaiian - Pacific Islander", # 匹配含Black的取值 grepl("Black", Race) ~ "Black - African American", # 未匹配到规则的取值保留原值,也可改为NA标记为待核查 TRUE ~ Race ) )
清洗后结果
两种方案运行后均可得到预期的标准化结果:
> df_clean Race 1 Native Hawaiian - Pacific Islander 2 Native Hawaiian - Pacific Islander 3 Native Hawaiian - Pacific Islander 4 Black - African American 5 Black - African American 6 Black - African American
内容的提问来源于stack exchange,提问作者missgwolf
相关产品推荐
相关产品推荐

