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

R语言:按分组提取全局唯一单词的实现问题求助

解决提取组内及跨组均唯一单词的问题

你需要提取在所有组中仅出现一次的单词,并按原分组汇总。以下是两种可行的实现方法:

方法一:使用tidyverse工具链(推荐,逻辑清晰)

通过拆分单词、统计全局出现次数、筛选后汇总的步骤实现:

library(tidyverse)

# 示例数据
example <- data.frame(group = c("A", "B", "A", "A"), 
                      word = c("car", "sun ,sun, house", "car, house", "tree"))

# 第一步:拆分所有单词并统计全局出现次数
word_global_counts <- example %>%
  separate_rows(word, sep = ",") %>%  # 把每行的单词拆分成单独行
  mutate(word = str_trim(word)) %>%   # 清理单词前后的空格
  count(word, name = "total_count")   # 统计每个单词的总出现次数

# 第二步:筛选全局唯一的单词,按组汇总
final_result <- example %>%
  separate_rows(word, sep = ",") %>%
  mutate(word = str_trim(word)) %>%
  inner_join(word_global_counts, by = "word") %>%  # 关联全局计数
  filter(total_count == 1) %>%  # 只保留全局仅出现一次的单词
  distinct(group, word) %>%    # 去重组内重复的单词
  group_by(group) %>%
  summarise(word = paste(word, collapse = ", "))  # 按组合并单词

print(final_result)

运行结果:

# A tibble: 2 × 2
  group word      
  <chr> <chr>     
1 A     car, tree 
2 B     sun       

方法二:使用Base R实现(无需额外包)

如果不想加载第三方包,可以用Base R的函数完成:

# 示例数据
example <- data.frame(group = c("A", "B", "A", "A"), 
                      word = c("car", "sun ,sun, house", "car, house", "tree"))

# 1. 拆分所有单词并清理空格
all_words <- trimws(unlist(strsplit(example$word, ",")))

# 2. 统计每个单词的全局出现次数,筛选出仅出现一次的单词
word_counts <- table(all_words)
unique_words <- names(word_counts[word_counts == 1])

# 3. 按组处理,提取符合条件的单词并汇总
final_result <- aggregate(
  word ~ group, 
  data = example,
  FUN = function(x) {
    # 拆分当前组的单词并清理空格
    group_words <- trimws(unlist(strsplit(x, ",")))
    # 筛选出全局唯一的单词,去重后合并
    paste(unique(group_words[group_words %in% unique_words]), collapse = ", ")
  }
)

print(final_result)

运行结果:

group       word
1     A car, tree
2     B       sun

原方法报错原因

你用aggregate直接paste0合并单词后,得到的是整串字符串,而非拆分后的单词列表。后续unlist只会把这个字符串拆成单个字符(而非单词),再用lapply(unique)会得到多个元素,赋值到数据框的单个单元格时就会出现维度不匹配的错误。核心问题是没有先完成单词的拆分,就直接处理合并后的字符串,逻辑顺序错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 20:01:05