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

R语言:如何基于另一数据框的部分匹配为数据框行分类?

解决df1样本名称与df2分组匹配的问题

嘿,我来帮你搞定这个分组匹配的需求!咱们可以用Python的pandas库一步步实现,下面是具体的操作步骤和代码:

1. 先构造示例数据

首先咱们先把你提到的两个数据框创建出来,方便测试:

import pandas as pd

# 创建df1
df1 = pd.DataFrame({
    'SAMPLE NAMES': ['1_a', '1_b', '1_c', '2_a', '2_b', '3_a', '4_a', '4_b']
})

# 创建df2
df2 = pd.DataFrame({
    'ID': [1, 2, 3, 4],
    'GROUP': ['X', 'X', 'Y', 'Z']
})

2. 从df1的样本名称中提取ID

咱们需要把SAMPLE NAMES里的数字部分(比如1_a里的1)提取出来,作为匹配的ID。这里用正则提取的方式最稳妥:

# 提取样本名称开头的数字,转为整数类型(和df2的ID类型保持一致)
df1['ID'] = df1['SAMPLE NAMES'].str.extract(r'^(\d+)').astype(int)

如果你的样本名称是用下划线固定分隔的,也可以用df1['SAMPLE NAMES'].str.split('_').str[0].astype(int),效果一样~

3. 合并数据框获取分组

现在咱们把两个数据框通过ID列关联,就能得到每个样本对应的分组了:

# 合并并保留需要的列
result_df = pd.merge(df1, df2, on='ID', how='left')[['SAMPLE NAMES', 'GROUP']]

4. 查看结果

运行完上面的代码后,打印result_df就能看到你想要的结果:

SAMPLE NAMES GROUP
0          1_a     X
1          1_b     X
2          1_c     X
3          2_a     X
4          2_b     X
5          3_a     Y
6          4_a     Z
7          4_b     Z

这样就完美实现了根据样本名称的部分匹配,给df1添加上对应的分组啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 04:01:10