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

如何在分组内堆叠数据集,使观测仅关联同组其他观测而非自身

问题:同国家组内观测互相关联(排除自身)

背景

此前已提问过如何让每个观测关联除自身外的所有其他观测,现在数据集包含国家维度,需要仅让同国家组内的观测互相关联,禁止跨组关联。

示例数据集

df <- data.frame(id1 = c("A","A","A","B","B","B"),
                 id2 = c("a", "b", "c", "a", "b", "c" ),
                 x1 = c(1,2,3,1,2,3))

原始数据集输出:

id1 id2 x1
1   A   a  1
2   A   b  2
3   A   c  3
4   B   a  1
5   B   b  2
6   B   c  3

其中id1代表国家,id2代表人员标识,需求为:每个人员仅关联同国家内的其他人员,且排除自身关联。

尝试过的代码

  • 代码1:
df <- df %>% group_by(id1) %>% merge( df, by = NULL) %>% 
  filter(id2.x != id2.y) 
  • 代码2:
df <- df %>% group_by(id2) %>% 
  left_join(df, df, by = character()) %>%
  filter(id2.x != id2.y) 

遇到的问题

运行上述代码后出现了跨国家组的关联(例如B国的b关联了A国的a),不符合需求。

期望输出

id1.x id2.x x1.x id1.y id2.y x1.y
1      A     a    1     A     b    2
2      A     a    1     A     c    3
3      A     b    2     A     a    1
4      A     b    2     A     c    3
5      A     c    3     A     a    1
6      A     c    3     A     b    2
7      B     a    1     B     b    2
8      B     a    1     B     c    3
9      B     b    2     B     a    1
10     B     b    2     B     c    3
11     B     c    3     B     a    1
12     B     c    3     B     b    2

即A、B两国各自内部的人员两两关联,不跨组,也不关联自身。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 16:40:39