将 DF1 中的每个观察值与 DF2 中的每个观察值进行比较(DF 具有不同的行长度)

Comparing every observations from DF1 to every observation in DF2 (DFs have different row lengths)

我希望将 DF2 中的每个观察结果与 DF1 中的每个观察结果进行比较,看看它是否落在 +/- 1 范围内。

示例数据帧:

##DF1:             
     
Obj min max midpoint
23   2   7     4.5 
32   5   6     5.5
24   8   12    10

##DF2: 

Obj min max midpoint
23   2   12    5 
32   5   7     6.0
24   8   16    12

DF2 中的所有中点将与 DF1 中的所有中点进行比较,如果它们在 +/- 1 的范围内,则为它们分配 ID 1(创建一个名为“ID”的新列)并且如果不是,则留空。完成所有比较后,应为空白列分配值 0。

期望:

##DF2:

Obj min max midpoint ID
23   2   12    5      1
32   5   7     6.0    1
24   8   14    11     0

数据帧的转换应该应用于第 N 个数据帧,当它与第 N-1 个数据帧进行比较时。因此,不会对第一个数据帧应用任何转换,因为它没有任何可比性,如果这有意义的话?

你可以试试这个。希望对您有所帮助。

library(dplyr)
DF2 %>% left_join(DF1 %>% select(c(1,4)) %>% rename(midpoint2=midpoint)) %>% 
  mutate(Index=ifelse(midpoint-midpoint2<1 & midpoint-midpoint2>-1,1,0))

你可以试试这个:

DF2$ID <- unlist(lapply(DF2$midpoint, function(x) ifelse(any(abs(x - DF1$midpoint) <= 1),1,0)))