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

R语言合并两张数据表并保留匹配重复项的实现需求

实现按Country字段的全组合匹配需求

你需要的是按Country字段进行分组的笛卡尔积连接,也就是将两张表中同属一个Country的所有行进行全组合匹配,以下是两种常用实现方案:

Pandas 实现代码

先构造示例数据,再通过merge方法完成连接:

import pandas as pd

# 构造DF1数据
df1 = pd.DataFrame({
    'Country': ['FRANCE', 'FRANCE', 'ITALY', 'ITALY', 'SPAIN'],
    'Y': [1, 1, 1, 1, 1],
    'Freq': [0, 1, 2, 3, 4]
})

# 构造DF2数据
df2 = pd.DataFrame({
    'Country': ['FRANCE', 'FRANCE', 'ITALY', 'SPAIN', 'SPAIN'],
    'Z': [1, 1, 1, 2, 1],
    'T': [0, 1, 2, 3, 4]
})

# 按Country字段进行内连接,自动生成同Country的全组合
df_final = pd.merge(df1, df2, on='Country', how='inner')

print(df_final)

运行后会输出你期望的最终数据表。

SQL 实现代码

如果用SQL处理,直接通过INNER JOIN按Country字段匹配即可:

-- 创建DF1表并插入数据
CREATE TABLE DF1 (
    Country VARCHAR(20),
    Y INT,
    Freq INT
);
INSERT INTO DF1 VALUES
('FRANCE', 1, 0),
('FRANCE', 1, 1),
('ITALY', 1, 2),
('ITALY', 1, 3),
('SPAIN', 1, 4);

-- 创建DF2表并插入数据
CREATE TABLE DF2 (
    Country VARCHAR(20),
    Z INT,
    T INT
);
INSERT INTO DF2 VALUES
('FRANCE', 1, 0),
('FRANCE', 1, 1),
('ITALY', 1, 2),
('SPAIN', 2, 3),
('SPAIN', 1, 4);

-- 执行连接查询,生成全组合结果
SELECT df1.Country, df1.Y, df1.Freq, df2.Z, df2.T
FROM DF1 df1
INNER JOIN DF2 df2 ON df1.Country = df2.Country;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 21:02:09