【发布时间】:2018-04-07 16:08:16
【问题描述】:
我有两个这样的数据框
a
Id start stop
1 ABC 25 30
2 ACD 40 60
3 BCD 55 60
b
Id start stop
1 XYZ 20 50
2 ZXY 80 90
3 YZX 50 70
并且我想合并两个数据帧中的 Id 并将它们放入一个新的(如下所示),如果第一个数据帧中起始列中的值较高并且停止列中的值较低第一个数据框。因此,由于 a 中的 [1,2] 高于 b 中的 [1,2] 并且 a 中的 [1,3] 低于 [1,3],因此两个数据帧中的 id 的 [1,1]进入新的数据框。
1 ABC XYZ
2 BCD YZX
我正在尝试使用 for 循环来执行此操作,如下所示,但似乎无法按我的意愿工作。任何帮助表示赞赏。我对 R 也很陌生,所以请保持简单:-)
a<-dataframe1
b<-dataframe2
for (i in 1:nrow(a)) {
for (j in 1:nrow(b)) {
if (a[i,2]>b[j,2] & a[i,3]<b[j,3]) {
z<-as.data.frame(cbind(a[i,1],b[j,1]))
}
}
}
【问题讨论】:
-
你能更好地解释你的输出吗?现在很混乱。输出如何得到 ABC, XYZ ?
-
同意@YOLO;输出的第一行不应该是
ACD XYZ吗? -
是的,很抱歉,现在应该是正确的。