我有两个大数据帧(nrow = 20,000)
,每个(X, Y and Z)
中都有公共变量。每个数据帧共享一个变量(Y)
的一些唯一值,但是X and Z
的值不同。我想做的是针对每个的唯一值,按照较小数据帧(df2)
中X
的值范围过滤一个数据帧(两个(df1)
中的较大值)。 Y
。因此,例如,如果X
中df1
的{{1}}值的范围为唯一的Y
值是0.02-0.08,那么我想获得{{1} }和X
从Z
开始,其中X的值在给定df2
的范围内。我想制作一个包含这些过滤值的新数据框。
以下是一些示例代码和数据以供示例使用
Y
因此,现在我过滤了# GENERATE SOME DATA
set.seed(5)
df1 <- data.frame(X = round(runif(20, 0.2, 0.3),4), Y = rep(c(4, 5, 6, 7, 8), each = 4), Z = round(runif(20),3))
df2 <- data.frame(X = round(runif(50, 0.1, 0.6),4), Y = rep(seq(1,10,1), each = 5), Z = round(runif(50),3))
## ESTABLISH THE RANGE OF X VALUES FOR EACH UNIQUE Y VALUE IN THE DATA FRAME OF INTEREST (df1)
library(dplyr)
df3 <- df1 %>%
group_by(Y) %>%
mutate(minX=min(X), maxX=max(X)) %>%
ungroup() %>%
distinct(Y, minX, maxX)
## FILTER df2 BY THE RANGE OF Y VALUES IN df1
df4<- df2 %>% filter(Y %in% df1$Y)
,只给了两个数据帧df2
共有的Y
值范围。我在这里需要做的是从(df4)
创建一个新的数据帧,其中仅包含df4
的值,每个值在X
的{{1}}值的范围内值X
df1
。
任何帮助表示赞赏。