Один из вариантов - преобразовать в matrix
, а затем использовать melt
, чтобы вернуть 3 столбца data.frame, а затем задать для этого data.frame значение на основе значения во втором data.frame
library(reshape2)
out <- subset(melt(as.matrix(df1)), value %in% df2$elevation)[3:1]
names(out) <- c('elevation', 'longitude', 'Latitude')
out
# elevation longitude Latitude
#4 1651 113.5 36.5
#6 549 113.5 33.5
* 1005. *
Или, если мы решим сделать это только с base R
out <- subset(as.data.frame.table(as.matrix(df1)), Freq %in% df2$elevation)[3:1]
names(out) <- c('elevation', 'longitude', 'Latitude')
data
df1 <- structure(list(`114.5` = c(1493L, 1074L, 358L), `113.5` = c(1651L,
1336L, 549L), `112.5` = c(1696L, 1794L, 609L), `111.5` = c(1918L,
1891L, 815L)), class = "data.frame", row.names = c("36.5", "35.5",
"33.5"))
df2 <- structure(list(elevation = c(1651, 549)), class = "data.frame",
row.names = c(NA,
-2L))