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

如何在R中对拼写略有差异的变量进行分类统计?

R语言中统一字符串拼写并统计类别的解决方案

针对sweets变量存在大小写、附加词汇差异的问题,可通过字符串匹配替换实现统一规范,再进行类别统计,以下是两种可行方案:

方法一:使用dplyr + stringr包(代码可读性高)

先加载所需工具包,再通过关键词匹配统一类别:

library(dplyr)
library(stringr)

# 原始数据
df <- data.frame(sweets= c("cookie", "CANDY", "Cookie", "cake", "IceCream", "Candy", "Chocolate COOKIE", "COOKIE", "CAKE", "Chocolate cake", "candy bar"))

# 统一规范拼写
df2 <- df %>%
  mutate(sweets = case_when(
    # 检测包含cookie关键词的字符串,统一为"Cookie"
    str_detect(str_to_lower(sweets), "cookie") ~ "Cookie",
    # 检测包含candy关键词的字符串,统一为"Candy"
    str_detect(str_to_lower(sweets), "candy") ~ "Candy",
    # 检测包含cake关键词的字符串,统一为"Cake"
    str_detect(str_to_lower(sweets), "cake") ~ "Cake",
    # 单独匹配IceCream(大小写统一后判断)
    str_to_lower(sweets) == "icecream" ~ "IceCream",
    # 保留未匹配到的原始值(可选,根据需求调整)
    TRUE ~ sweets
  ))

# 按类别统计
df3 <- table(df2$sweets)
# 查看结果
df2
df3

方法二:基础R实现(无需额外安装包)

利用基础R的字符串处理函数完成统一:

# 原始数据
df <- data.frame(sweets= c("cookie", "CANDY", "Cookie", "cake", "IceCream", "Candy", "Chocolate COOKIE", "COOKIE", "CAKE", "Chocolate cake", "candy bar"))

# 先统一转为小写,消除大小写影响
df$lower_sweets <- tolower(df$sweets)

# 嵌套ifelse完成类别映射
df2 <- data.frame(
  sweets = ifelse(grepl("cookie", df$lower_sweets), "Cookie",
                  ifelse(grepl("candy", df$lower_sweets), "Candy",
                         ifelse(grepl("cake", df$lower_sweets), "Cake",
                                ifelse(df$lower_sweets == "icecream", "IceCream", df$sweets))))
)

# 按类别统计
df3 <- table(df2$sweets)
# 查看结果
df2
df3

两种方案运行后,都能得到你预期的df2和df3统计结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 08:25:30