将一个数据帧 (A) 中的行名称的一部分匹配到另一个数据帧 (B),然后从 A 到 B 添加与该行相关的列

时间:2021-07-07 07:35:08

标签: r dataframe data-wrangling

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

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

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

<头>
主题 ID 性别 年龄
主题A M 32
主题B F 16

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

<头>
样本ID 验血结果
主题A-01 2.34
主题A-02 2.55
主题B-12 3.56

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

<头>
样本ID 验血结果 性别 年龄
主题A-01 2.34 M 32
主题A-02 2.55 M 32
主题B-12 3.56 F 16

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

1 个答案:

答案 0 :(得分:0)

这行得通吗:

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