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

基于标记"1"关联两个DataFrame并聚合对应详情的技术咨询

解决方案:聚合匹配对应的详情信息

我来帮你搞定这个需求!核心思路是先把宽格式的df1转换为适合关联的长格式,再与df2匹配获取详情,最后按Name聚合结果。这里用R的tidyverse工具集(tidyr+dplyr)来实现会非常高效,步骤如下:

1. 准备工作(加载/安装包)

如果还没安装tidyverse,先执行安装命令:

install.packages("tidyverse")

然后加载包:

library(tidyverse)

2. 将宽格式df1转为长格式

我们需要把A1/A2/A3这些列转换为Var列,同时过滤掉不匹配(NA)的行:

df1_long <- df1 %>%
  pivot_longer(cols = -Name, names_to = "Var", values_to = "Match") %>%
  filter(!is.na(Match))

转换后的df1_long长格式如下:

> df1_long
# A tibble: 6 × 3
  Name  Var   Match
  <chr> <chr> <dbl>
1 N1    A1        1
2 N1    A3        1
3 N2    A2        1
4 N2    A3        1
5 N3    A1        1
6 N3    A3        1

3. 与df2关联获取详情

通过Var列将两个表连接,把每个匹配的Var对应的Detail带过来:

merged_df <- df1_long %>%
  left_join(df2, by = "Var")

关联后的结果:

> merged_df
# A tibble: 6 × 4
  Name  Var   Match Detail     
  <chr> <chr> <dbl> <chr>      
1 N1    A1        1 Red        
2 N1    A3        1 Green, Red 
3 N2    A2        1 Red, Blue  
4 N2    A3        1 Green, Red 
5 N3    A1        1 Red        
6 N3    A3        1 Green, Red 

4. 按Name聚合详情信息

最后按Name分组,把对应的Detail拼接成一个字符串(这里用逗号分隔):

final_result <- merged_df %>%
  group_by(Name) %>%
  summarise(Combined_Detail = str_c(Detail, collapse = ", ")) %>%
  ungroup()

最终输出结果:

> final_result
# A tibble: 3 × 2
  Name  Combined_Detail       
  <chr> <chr>                 
1 N1    Red, Green, Red       
2 N2    Red, Blue, Green, Red 
3 N3    Red, Green, Red       

可选:去重聚合(避免重复标签)

如果不想让Detail里的重复标签出现(比如N1的Red重复),可以先拆分标签、去重再拼接:

final_result_distinct <- merged_df %>%
  group_by(Name) %>%
  summarise(
    Combined_Detail = str_split(Detail, ", ") %>%
      unlist() %>%
      unique() %>%
      str_c(collapse = ", ")
  ) %>%
  ungroup()

去重后的结果:

> final_result_distinct
# A tibble: 3 × 2
  Name  Combined_Detail
  <chr> <chr>          
1 N1    Red, Green     
2 N2    Red, Blue, Green
3 N3    Red, Green     

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:56:16