在R中实现一个变量值与另一变量所有其他值的关联操作
实现同类别下From与非自身对应To值的全关联
给定初始数据集:
from to class red 1 A blue 2 A black 3 A
需要生成包含原数据行,且每个from值关联同类别下除自身对应to外所有to值的结果集。
解决方案(基于Pandas)
通过分组处理+生成配对的方式可以快速实现需求,代码如下:
import pandas as pd # 初始化数据集 df = pd.DataFrame({ 'from': ['red', 'blue', 'black'], 'to': ['1', '2', '3'], 'class': ['A', 'A', 'A'] }) # 按class分组处理逻辑 def process_group(group): # 获取当前分组内所有的to值 all_tos = group['to'].tolist() new_rows = [] # 遍历组内每一行,生成非自身to的配对 for _, row in group.iterrows(): # 筛选出当前行to之外的所有值 other_tos = [t for t in all_tos if t != row['to']] # 批量生成新行数据 for t in other_tos: new_rows.append({ 'from': row['from'], 'to': t, 'class': row['class'] }) # 合并原数据与新生成数据 return pd.concat([group, pd.DataFrame(new_rows)], ignore_index=True) # 应用分组逻辑并调整顺序匹配示例 result = df.groupby('class', group_keys=False).apply(process_group) # 按from和to排序,对齐示例输出顺序 result = result.sort_values(['from', 'to'], ignore_index=True) # 打印结果(不含索引) print(result.to_string(index=False))
输出结果
运行后会得到符合要求的数据集:
from to class red 1 A red 2 A red 3 A blue 1 A blue 2 A blue 3 A black 1 A black 2 A black 3 A
内容的提问来源于stack exchange,提问作者Miki
相关产品推荐
相关产品推荐

