我正在寻找一个基因数据集的子集,根据其机器学习类别(标签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()中设置条件的任何指导都将是感谢。
当前,我正在工作,在excel中将每个基因的所有rssnp1预测为0,然后使用
order <- df[order(match(df$rssnp1, target_order)),]
目标订单是我手动输入数百个rssnp1 id,但是有什么方法比这更快吗?
答案 0 :(得分:2)
我将执行两步选择:
找到预测为0的变体:
prediction_snps = df$rssnp1[df$ML.prediction == 0]
基于SNP细分数据:
result = df[df$rssnp1 %in% prediction_snps, ]
您还可以使用dplyr或data.table获得类似的结果。无论哪种方式,这里都不需要lapply
和order
,它们并没有真正的帮助。
答案 1 :(得分:2)
请注意,您的示例数据似乎存在错误,其中rs444444
与r4444444
不同;因此预期的输出与您的输入数据不匹配。
此外,这是一个dplyr
选项
df %>%
group_by(rssnp1) %>%
filter(any(ML.prediction == 0)) %>%
ungroup()
## A tibble: 8 x 7
# Chr Start End rssnp1 Type gene ML.prediction
# <int> <int> <int> <fct> <fct> <fct> <int>
#1 1 1244733 1244734 rs2286773 LD_SNP ACE 0
#2 1 1257536 1257436 rs333333 LD_SNP CPEB4 1
#3 1 1252336 1252336 rs2286773 Sentinel CPEB4 2
#4 1 1252343 1252343 rs333333 LD_SNP CPEB4 0
#5 1 1254841 1254841 rs333333 LD_SNP BRCA2 3
#6 1 1256703 1267404 rs444444 LD_SNP HER2 0
#7 1 1269246 1269246 rs301159 LD_SNP CPEB4 1
#8 1 1370168 1370168 rs301159 LD_SNP GLUT2 0
说明:按rssnp1
对条目进行分组,然后仅保留至少一个条目具有ML.prediction == 0
的那些组。
df <- read.table(text =
"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", header = T)