根据来自另一个数据帧的唯一值范围过滤数据帧中的值

时间:2020-04-24 00:24:58

标签: r dataframe filter dplyr

我有两个大数据帧(nrow = 20,000),每个(X, Y and Z)中都有公共变量。每个数据帧共享一个变量(Y)的一些唯一值,但是X and Z的值不同。我想做的是针对每个的唯一值,按照较小数据帧(df2)X的值范围过滤一个数据帧(两个(df1)中的较大值)。 Y。因此,例如,如果Xdf1的{​​{1}}值的范围为唯一的Y值是0.02-0.08,那么我想获得{{1} }和XZ开始,其中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

任何帮助表示赞赏。

0 个答案:

没有答案