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

在R语言中按组查找字符串中的共同字符

在R语言中按组查找字符串共有的字符

我有一个名为df的数据框:

group string
1     1     Bc
2     1    EPc
3     1    Lkc
4     2    ABR
5     2     mA
6     2    Amt
7     3    Yrt
8     3    rtU
9     3    rti

我希望按group分组,找出每组内所有字符串都包含的共有字符。比如第1组的所有字符串都包含字符c,期望输出如下:

group similar
1     1       c
2     2       A
3     3      rt

df的dput代码:

df <- structure(list(group = c("1", "1", "1", "2", "2", "2", "3", "3", 
"3"), string = c("Bc", "EPc", "Lkc", "ABR", "mA", "Amt", "Yrt", 
"rtU", "rti")), class = "data.frame", row.names = c(NA, -9L))

解决方案

方法1:使用dplyr分组处理

结合dplyr的分组功能,搭配字符串拆分和交集计算实现需求:

library(dplyr)

df %>%
  group_by(group) %>%
  summarise(similar = {
    # 将每个字符串拆分为单个字符的列表
    char_lists <- strsplit(string, "")
    # 求分组内所有字符列表的交集
    common_chars <- Reduce(intersect, char_lists)
    # 拼接交集字符为字符串
    paste(common_chars, collapse = "")
  }) %>%
  ungroup()

运行后输出:

# A tibble: 3 × 2
  group similar
  <chr> <chr>  
1 1     c      
2 2     A      
3 3     rt     

方法2:纯base R实现

无需加载额外包,用aggregate函数完成分组计算:

aggregate(string ~ group, data = df, FUN = function(x) {
  char_lists <- strsplit(x, "")
  common_chars <- Reduce(intersect, char_lists)
  paste(common_chars, collapse = "")
})

该方法同样能得到与期望一致的结果。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 15:01:05