首页 > 解决方案 > 如何根据多个条件对数据进行子集化

问题描述

我正在寻找一个基因数据集的子集,根据它们的机器学习类(标签 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,但有什么比这更快的方法吗?

标签: rbioinformatics

解决方案


我将执行两步选择:

  1. 查找预测 = 0 的变体:

    prediction_snps = df$rssnp1[df$ML.prediction == 0]
    
  2. 根据 SNP 对数据进行子集:

    result = df[df$rssnp1 %in% prediction_snps, ]
    

您还可以使用 dplyr 或 data.table 获得类似的结果。无论哪种方式,lapply这里order都不需要,也没有真正的帮助。


推荐阅读