r - 如何根据多个条件对数据进行子集化
问题描述
我正在寻找一个基因数据集的子集,根据它们的机器学习类(标签 0-2)和它们的基因座/rssnp ID 选择基因。
我的数据如下所示:
Chr Start End rssnp1 Type gene ML.prediction
1 1244733 1244734 rs2286773 LD_SNP ACE 0
1 1257536 1257436 rs333333 LD_SNP CPEB4 1
1 1252336 1252336 rs2286773 Sentinel CPEB4 2
1 1252343 1252343 rs333333 LD_SNP CPEB4 0
1 1254841 1254841 rs333333 LD_SNP BRCA2 3
1 1256703 1267404 rs444444 LD_SNP HER2 0
1 1269246 1269246 rs301159 LD_SNP CPEB4 1
1 1370168 1370168 rs301159 LD_SNP GLUT2 0
1 1371824 1371824 r4444444 LD_SNP GLUPA1 1
1 1372591 1372591 rs111111 LD_SNP GLUPA1 1
1 1372591 1372591 rs111111 LD_SNP GLUPA2 1
1 1372591 1372591 rs111111 LD_SNP GLUPA3 1
我的输出是这样的:
Chr Start End rssnp1 Type gene ML.prediction
1 1244733 1244734 rs2286773 LD_SNP ACE 0
1 1252336 1252336 rs2286773 Sentinel CPEB4 2
1 1257536 1257436 rs333333 LD_SNP CPEB4 1
1 1252343 1252343 rs333333 LD_SNP CPEB4 0
1 1254841 1254841 rs333333 LD_SNP BRCA2 3
1 1269246 1269246 rs301159 LD_SNP CPEB4 1
1 1370168 1370168 rs301159 LD_SNP GLUT2 0
1 1256703 1267404 rs444444 LD_SNP HER2 0
1 1371824 1371824 r4444444 LD_SNP GLUPA1 1
所以它只选择预测为0的基因,然后根据匹配的rssnp1选择该基因的周围基因。
我曾尝试使用 lapply() 和 order,但我是一个初学者,并且正在努力制作任何有效的东西,所以任何关于我应该使用哪些功能或如何在 lapply() 中设置我的条件的指导将不胜感激。
目前我正在工作,获取每个基因的所有 rssnp1,在 excel 中预测为 0,然后使用
order <- df[order(match(df$rssnp1, target_order)),]
目标顺序是我手动输入数百个 rssnp1 id,但有什么比这更快的方法吗?
解决方案
我将执行两步选择:
查找预测 = 0 的变体:
prediction_snps = df$rssnp1[df$ML.prediction == 0]
根据 SNP 对数据进行子集:
result = df[df$rssnp1 %in% prediction_snps, ]
您还可以使用 dplyr 或 data.table 获得类似的结果。无论哪种方式,lapply
这里order
都不需要,也没有真正的帮助。
推荐阅读
- nativescript - 命名路由器组件无法显示在我的 Nativescript 角度项目中
- c# - 验证文件后错误无效 json 原语
- wordpress - 我们如何覆盖产品订购脚本
- ios - 如何使用 Siri 语音命令验证用户在多项选择题中的回答
- c# - 如何在 Sync Fusion Chart Control ChartSeries 中更改符号前的文本位置
- php - 无法使用 php for Salesforce API 将访问令牌放入 SOAP 客户端
- rest - 用于备份和恢复的 RESTful API
- android - 如何从 Fragment 中的共享偏好中获取价值?
- c# - 当 WebClient 给出超时异常时,使用 TPL (Task.WhenAll) 从 URL 批量读取图像会陷入死锁
- python - 输出是什么?为什么是[无,无,无]