R语言中变量值录入格式不一时如何用group_by正确分组统计
解决方案
直接基于原始录入的customer_name字段分组会因为录入格式差异拆分同一客户,需要先对姓名做标准化清洗,再基于清洗后的标准字段执行分组统计即可。
常见录入噪声类型
你当前遇到的姓名差异主要分两类:
- 大小写格式不统一:同一姓名存在大小写混用的情况
- 冗余附加信息:录入时附带了身份备注、年份等非姓名核心内容
实现代码
依赖tidyverse生态的dplyr做数据处理、stringr做字符串清洗,代码如下:
library(tidyverse) customer_grouped <- customer_dataset %>% mutate( # 统一转小写,消除大小写差异 customer_name_std = str_to_lower(customer_name), # 截断冗余后缀:匹配备注关键词、逗号等分隔符前的内容,保留核心姓名 # 可根据实际数据里的冗余内容,往匹配规则里追加关键词 customer_name_std = str_extract(customer_name_std, "^.*?(?= the actor|,|$)"), # 去除首尾多余空格,统一转为首字母大写的规范姓名格式 customer_name_std = str_trim(customer_name_std), customer_name_std = str_to_title(customer_name_std) ) %>% # 基于标准化后的姓名字段分组计数 group_by(customer_name_std) %>% summarise(order_count = n(), .groups = "drop")
效果说明
针对你给出的示例数据,所有存在大小写差异、带后缀备注的条目,清洗后都会被统一归为Will Smith分组,最终统计得到的总订单数为56,不会再出现同一客户被拆分到多个分组的问题。
扩展提示:如果后续数据中出现其他姓名录入差异(比如错别字、昵称、中间名缩写),只需要在
mutate清洗步骤中补充对应的字符串处理规则即可,后续分组统计逻辑无需调整。
内容的提问来源于stack exchange,提问作者Anh Duy
相关产品推荐
相关产品推荐

