如何检查df2中的对是否与R中的df1对(含)成对?

时间:2020-03-08 02:53:24

标签: r dataframe comparison pairwise

我有两个数据帧,我想将数据帧and对与数据帧b对进行比较,并查看a中的数据对是否在(包含)范围内b中的配对/范围。例如,请参见下文:

a

我已经完成了Stack Overflow的挖掘工作,除了this listing之外什么都没有。但是此人正在将单个值与成对进行比较,而不是将成对的成对或成对的成对进行比较。我对两个数据框都进行了df_1 <- data.frame(x= c(-82.38319, -82.38318, -82.40397, -82.40417, -82.40423), y= c(29.61212, 29.61125, 29.61130, 29.61134, 29.61167)) #Output: # x y # 1 -82.38319 29.61212 # 2 -82.38318 29.61125 # 3 -82.40397 29.61130 # 4 -82.40417 29.61134 # 5 -82.40423 29.61167 df_2 <- data.frame(o= c(-82.38320,-82.38317,-82.40397,-82.40416,-82.40424), t= c(29.61212, 29.6114, 29.61130, 29.61133, 29.61167)) #Output: # o t # 1 -82.38320 29.61212 # 2 -82.38317 29.61140 # 3 -82.40397 29.61130 # 4 -82.40416 29.61133 # 5 -82.40424 29.61167 #made this dataframe as an example only. desired_output <- data.frame(lat= df_2$o, lon= df_2$t, exists= c(NA, "YES","YES","YES",NA)) #Output I seek: # lat lon exists # 1 -82.38320 29.61212 <NA> # 2 -82.38317 29.61140 YES # 3 -82.40397 29.61130 YES # 4 -82.40416 29.61133 YES # 5 -82.40424 29.61167 <NA> #explanation: #1- even though 82.38320 is OK & is in rows 3,4,5 in df_1, 29.61212 is out of bounds with their co-pairings. #2- row 2 of df_2 is within the row 5 of df_1. #3- row 3 of df_2 matches to row 3 of df_1 thus inclusive #4- row 4 pair matches and its co_pair is less than those pair of row 4 in df_1 #5- This pair at row 5 is out of bounds in all of the rows of df_1 #Column "exists" can be appended to dataframe b, result matters only, neatness is not an issue. 的使用,并进行了比较。但是我失败了。

接下来我可以尝试什么?

2 个答案:

答案 0 :(得分:3)

我们可以使用mapplyo的{​​{1}}和t值与df_2进行比较,并检查df_1的值是否为范围和相应地分配any"YES"

NA

答案 1 :(得分:1)

我们可以在data.table中使用非等分联接

library(data.table)
setDT(df_2)[df_1, exists := "YES", on = .(o >= x, t < y), mult = 'first']