我有两个数据帧,我想计算同一个chr中result_gain为1且启动和停止数字+/-探测器相同的次数。
这里探测= 1000
因此,如果dataframe1在开始时的result_gain为1 + - 探针并且在chr 5处停止+/-探针在相同的chr编号并且启动+/-探针并且停止+/-探针并且result_gain为1那么我希望计数这个,我附上的方法不起作用,你有什么建议吗?
dataframe1
chr start stop result_gain result_loss result_cnloh
2 0 90247720 0 0 0
2 95627407 243199373 0 0 0
7 0 57789531 1 0 0
7 61760895 159138663 1 0 0
8 0 6974050 0 0 0
8 8102641 43646413 1 0 0
8 47060977 146364022 0 0 0
9 0 38771460 0 0 0
9 71034203 141213431 0 0 0
10 0 38685231 0 0 0
10 42810783 135534747 0 0 0
11 0 51530241 0 0 0
11 54835623 135006516 0 0 0
12 0 34768168 0 0 0
12 38416139 133851895 0 0 0
13 19263735 115169878 0 0 0
14 20213937 107349540 0 0 0
15 20161372 102531392 1 0 0
17 0 22175355 0 0 0
17 25375921 81195210 0 0 0
dataframe 2
chr start stop result_gain result_loss result_cnloh
2 0 90247720 1 0 0
2 95627407 243199373 0 0 0
7 0 57789531 1 0 0
7 61760895 159138663 1 0 0
8 0 6974050 0 0 0
8 8101641 43646413 1 0 0
8 47060977 146364022 0 0 0
9 0 38771460 0 0 0
9 71034203 141213431 0 0 0
10 0 38685231 0 0 0
10 42810783 135534747 0 0 0
11 0 51530241 0 1 0
11 54835623 135006516 0 0 0
12 0 34768168 0 0 0
12 38416139 133851895 0 0 0
13 19263735 115169878 0 0 0
14 20213937 107349540 0 0 0
15 20161372 102531392 1 0 0
17 0 22175355 0 0 0
17 25375921 81195210 0 0 0
以下是两个匹配的行 匹配dataframe1
中的行7 0 57789531 1 0 0
7 61760895 159138663 1 0 0
8 8102641 43646413 1 0 0
15 20161372 102531392 1 0 0
匹配dataframe2
中的行7 0 57789531 1 0 0
7 61760895 159138663 1 0 0
8 8101641 43646413 1 0 0
15 20161372 102531392 1 0 0
输出
score = 4
在为dataframe1和dataframe2对每个chr进行子集化后,我使用以下条件来计算,但它不起作用。
for (e in 1:nrow(gains_idcc)) {
for (h in 1:nrow(gains_dciss)) {
if (gains_dciss$start[e] <= (idcc$start[h] + probes_per_bp) | dciss$start[e] <= (idcc$start[h] - probes_per_bp) | dciss$start[e] == idcc$start[h] && dciss$stop[e] >= (idcc$stop[h] + probes_per_bp) | dciss$stop[e] >= (idcc$stop[h] - probes_per_bp) | dciss$stop[e] <= idcc$stop[h]) {
score_gain = score_gain + nrow(gains_dciss)