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

R语言实现两表合并:将次表值置于主表对应单元格括号内

合并两个结构一致表格的实现方法

下面提供几种不同场景下的实现方案,满足你将第二个表格对应值放入第一个表格对应值括号中、NA值保持不变的需求:

方案一:Python pandas 脚本实现

适合有编程基础的场景,处理效率高,适合批量或复杂表格:

import pandas as pd

# 读取或定义两个表格数据(如果是文件可改用pd.read_csv/pd.read_table)
df1 = pd.DataFrame(
    {'Dante': [1477, 1427, None, 1614],
     'Inferno': [445, 751, 273, None],
     'Purgatorio': [None, 359, 3095, 43],
     'Paradiso': [191, 360, None, 116]},
    index=['A', 'B', 'C', 'D']
)

df2 = pd.DataFrame(
    {'Dante': [658, 653, None, 703],
     'Inferno': [445, 751, 273, None],
     'Purgatorio': [None, 97, 2095, 43],
     'Paradiso': [116, 360, None, 103]},
    index=['A', 'B', 'C', 'D']
)

# 定义单元格合并逻辑
def merge_cell(v1, v2):
    if pd.isna(v1) or pd.isna(v2):
        return 'NA' if pd.isna(v1) else str(int(v1))
    return f"{int(v1)}({int(v2)})"

# 应用逻辑到整个表格
merged_df = df1.combine(df2, merge_cell)

# 输出结果(na_rep指定空值显示为NA)
print(merged_df.to_string(na_rep='NA'))

运行后会直接输出你需要的合并格式表格。

方案二:Excel 公式实现

适合日常办公场景,无需编程:

假设第一个表格在Sheet1的A1:E5区域,第二个表格在Sheet2的A1:E5区域:

  1. 新建Sheet3作为结果表,复制表头到Sheet3的A1:E1
  2. 在Sheet3的B2单元格输入以下公式:
=IF(OR(Sheet1!B2="NA",Sheet2!B2="NA"), IF(Sheet1!B2="NA","NA",Sheet1!B2), CONCAT(Sheet1!B2,"(",Sheet2!B2,")"))
  1. 选中B2单元格,拖动填充柄覆盖所有数据单元格,最后调整列宽对齐即可。

方案三:Shell awk 纯文本处理

适合处理纯文本格式的表格文件(如.txt):

  1. 新建脚本文件merge_tables.awk,写入以下内容:
BEGIN {OFS="\t"}
NR==FNR {
    for(i=1;i<=NF;i++) {
        table1[NR,i] = $i
    }
    next
}
{
    printf "%s", $1
    for(i=2;i<=NF;i++) {
        if(table1[FNR,i] == "NA" || $i == "NA") {
            output = (table1[FNR,i] == "NA") ? "NA" : table1[FNR,i]
        } else {
            output = table1[FNR,i]"("$i")"
        }
        printf "%s%s", OFS, output
    }
    print ""
}
  1. 假设两个表格文件名为table1.txt和table2.txt,在终端运行命令:
awk -f merge_tables.awk table1.txt table2.txt

即可得到合并后的纯文本表格。

内容的提问来源于stack exchange,提问作者Ahir Bhairav Orai

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 00:09:23