может кто-нибудь мне помочь? Вот подробности ниже.
Пример кадра данных 1:
Latitude Longitude
12.10 4.10
12.20 4.20
12.30 4.50
Кадр данных 2:
ID Latitude1 Latitude2 Longitude1 Longitude2
ABC 11.5 12.15 3.9 4.15
DEF 12.17 12.25 4.17 4.25
GHI 12.27 12.45 4.45 4.48
Требуемый выход:
Latitude Longitude ID
12.10 4.10 ABC
12.20 4.20 DEF
12.30 4.50 NA
3-я строка в выходном значении - NA, поскольку значение ее долготы не находится в диапазоне, указанном в dataframe2.
Попытка решения: Я создал функцию и использовал DPLYR, но я могу выполнять поиск диапазона только для одного вектора (Широта).
getValue <- function(x,data) {
tmp <- data %>%
filter(Latitude1 <= x, x <= Latitude2) %>%
filter(row_number() == 1)
return(tmp$ID)
}
data_interval <- sapply(df1$Latitude, getValue, data=df2)
df1 dput:
df1 <- structure(list(Latitude = c(12.1, 12.2, 12.3), Longitude = c(4.1,
4.2, 4.5)), row.names = c(NA, -3L), class = c("tbl_df", "tbl",
"data.frame"))
df2 dput:
df2 <- structure(list(ID = c("ABC", "DEF", "GHI"), Latitude1 = c(11.5,
12.17, 12.27), Latitude2 = c(12.15, 12.25, 12.45), Longitude1 = c(3.9,
4.17, 4.45), Longitude2 = c(4.15, 4.25, 4.48)), row.names = c(NA,
-3L), class = c("tbl_df", "tbl", "data.frame"))