我有两个表,对于表1中的每一行,我需要计算该值是否与表2中值的范围相匹配(表2的第1列显示星形范围,而第2列表示该范围的末尾)
我在R中尝试了以下脚本,但是这花费了很长时间并且没有提供正确的答案(count_exon和count_intergenic = 0)。
这是我的数据和脚本的示例:
Table 1:
POS
119002
119672
119941
120024
120107
121093
1205376
1205623
1205837
Table 2:
START;END
634386;635717
348842;348940
349108;349199
349382;350489
1203603;1204923
1205095;1205132
1205273;1205383
1205535;1205624
1205740;1205838
count_exon=0
count_intergenic = 0
i = 1
j = 1
while (i <= nrow(lp)) {
if (j == nrow(exon) && lp[i,2] >= exon[j,1] && lp[i,2] <= exon[j,2]) {
j = 1 #case of exon positions in last line
i = i+1
count_exon = count_exon + 1
} else if (j == nrow(exon) && lp[i,2] <= exon[j,1] && lp[i,2] >= exon[j,2]) {
j = 1 #case of intergenic or intron positions
count_intergenic = count_intergenic + 1
} else if (lp[i,2] >= exon[j,1] && lp[i,2] <= exon[j,2]) {
j = 1 #case of exon positions
i = i+1
count_exon = count_exon + 1
} else {
j= j+1
}
}
我希望得到这样的结果:
count_exon = 3(将与表1中的值与表2中的范围相匹配的值)
count_intergenic = 6(表1中的值与表2的范围不匹配)
感谢您的帮助!