r - 将行名称的一部分从一个数据帧 (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 |
实现这一目标的最佳方法是什么?我将不胜感激任何帮助,因为我对这种编码语言还是新手。谢谢!
解决方案
这是否有效:
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
推荐阅读
- ruta - Ruta 转义特殊字符
- c++ - 递归函数给出分段错误,如何将指针对象指向它的子对象?
- xorg - How do I emulate Play media key on a laptop with no media keys on GNU/Linux?
- node.js - NodeJS read JSON data with # in key
- python - 您如何在顶层窗口中使用各种变量进行计算?
- c# - 使用 C# 在 MongoDB 中将 XML 转换为 BsonArray
- python - 使用python线程访问大量数据
- javascript - 如何使用 google-appscripts 在我的电子邮件中将 google 幻灯片作为附件发送?
- python-3.x - Pandas:导入多个 CSV 文件并追加在一起,使元素按照时间索引排列
- sql - 可以从 PL/SQL Oracle 中的正在进行的游标中删除字段吗?