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

R语言按分组变量求组内列表元素交集的实现问题

首先导入所需依赖并构造数据集:

library(tidyverse)

# 原始数据集构造
toy.dat <- data.frame(group = c(rep("A_0", 3), rep("A_1", 2), 
                                rep("B_0", 3) , rep("B_1", 3)))
toy.dat$letters <- c("A", 'B', "C", "A", "D", "C", "E", "F", "A", "B", "F")

# 你已完成的按group汇总步骤
summarised_df <- toy.dat %>% 
  group_by(group) %>% 
  summarise(letters = list(letters), num_elements = n()) %>%
  mutate(group_num = gsub(".*_", "", group))

接下来按group_num分组计算交集,直接新增列存储对应分组的公共字符:

result_df <- summarised_df %>%
  group_by(group_num) %>%
  mutate(common_letters = list(Reduce(intersect, letters)))

Reduce会把同一group_num下的所有letters字符向量依次传入intersect函数,最终得到所有向量的共同元素,即多个向量的交集。

如果需要每个group_num仅输出一行交集结果,可以改用summarise:

intersect_result <- summarised_df %>%
  group_by(group_num) %>%
  summarise(common_letters = list(Reduce(intersect, letters)))

结果说明

  • group_num = 0的交集结果为"C"
  • group_num = 1的交集结果为"A"
    和预期输出完全一致。

内容的提问来源于stack exchange,提问作者say.ff

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 21:45:01