首页 > 解决方案 > 将行名称的一部分从一个数据帧 (A) 匹配到另一个数据帧 (B),然后将与该行相关的 A 列添加到 B

问题描述

我对如何执行这种形式的数据整理有点困惑,因为我是 R 编码的新手。我的目标是将 subjectID 信息与我拥有的这个大型数据集相匹配,该数据集的行数多于 subjectID 数据的行数。这是因为大数据与一组受试者有多个会话。例如,主题 A 的数据具有行名称 SubjectA-01、SubjectA-02 等。

我的目标是将 SubjectID 名称与大型数据集相匹配,这样我就可以添加新列(性别、年龄、BMI 等)作为与数据相关的列。

我们可以称这个数据帧 SubjectID <-

主题 ID 性别 年龄
科目A 32
科目B F 16

我想用这个信息来匹配这个矩阵中的开始关键字。让我们将此数据集称为 BioResults。

样品编号 血液结果
主题A-01 2.34
主题A-02 2.55
对象B-12 3.56

我的目标是制作一个如下所示的新数据集:

样品编号 血液结果 性别 年龄
主题A-01 2.34 32
主题A-02 2.55 32
对象B-12 3.56 F 16

实现这一目标的最佳方法是什么?我将不胜感激任何帮助,因为我对这种编码语言还是新手。谢谢!

标签: rdataframedata-wrangling

解决方案


这是否有效:

library(dplyr)
library(stringr)

BioResults %>% mutate(ID = str_remove(SampleID, '-..')) %>% 
       inner_join(subjectID, by = c('ID' = 'SubjectID')) %>% select(-ID)
     SampleID Blood.Result Sex Age
1 SubjectA-01         2.34   M  32
2 SubjectA-02         2.55   M  32
3 SubjectB-12         3.56   F  16

使用的数据:

BioResults
     SampleID Blood.Result
1 SubjectA-01         2.34
2 SubjectA-02         2.55
3 SubjectB-12         3.56
subjectID
  SubjectID Sex Age
1  SubjectA   M  32
2  SubjectB   F  16

推荐阅读