将 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)))
我希望将 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)))