使用条件来计算来自两个数据帧的匹配行r

时间:2015-03-10 18:57:30

标签: r dataframe conditional

我有两个数据帧,我想计算同一个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)

0 个答案:

没有答案