如何用R按多分隔符分割列并统计各响应实例数?
多分隔符字符串分割与频次统计解决方法
针对你遇到的无法同时用逗号、斜杠分割字符串的问题,这里提供两种可行的R语言解决方案:
方案一:使用tidyverse工具链
利用正则表达式指定多分隔符,配合tidyverse的函数完成分割、清洗与统计:
library(tidyverse) # 模拟数据(替换为你的实际数据框) df <- tibble(Answers = c("苹果/香蕉", "苹果,橙子", "香蕉/橙子,苹果")) # 核心处理流程 result <- df %>% # 用正则[,/]匹配逗号或斜杠作为分隔符,拆分长字符串 separate_longer_delim(Answers, delim = "[,/]") %>% # 去除答案前后的空格(避免因空格导致统计错误) mutate(Answers = str_trim(Answers)) %>% # 统计每个答案的出现次数 count(Answers, name = "出现次数") %>% # 按出现次数降序排列结果 arrange(desc(`出现次数`)) print(result)
方案二:使用Base R实现
如果不想加载额外包,用Base R也能完成需求:
# 模拟数据(替换为你的实际数据框) df <- data.frame(Answers = c("苹果/香蕉", "苹果,橙子", "香蕉/橙子,苹果")) # 拆分所有字符串为向量 answers_vec <- unlist(strsplit(df$Answers, "[,/]")) # 去除空格 answers_vec <- trimws(answers_vec) # 统计频次并整理格式 result <- as.data.frame(table(answers_vec)) colnames(result) <- c("Answers", "出现次数") # 按频次降序排序 result <- result[order(-result$`出现次数`), ] print(result)
关键说明
- 正则表达式
[,/]是实现多分隔符匹配的核心,它表示匹配逗号或斜杠任意一个字符; - 加入去空格步骤是为了避免分隔符前后的空格导致相同答案被重复统计(比如" 苹果"和"苹果"会被识别为不同项)。
内容的提问来源于stack exchange,提问作者JSP
相关产品推荐
相关产品推荐

