首页 > 解决方案 > 根据来自另一个数据帧的唯一值范围过滤数据帧中的值

问题描述

我有两个大数据框(nrow = 20,000),每个都有公共变量(X, Y and Z)。每个数据框共享一个变量的一些唯一值(Y),但 的值X and Z不同。我想要做的是过滤一个数据帧(两个中较大的一个(df2)),根据每个唯一值X的较小数据帧中的值范围。因此,例如,如果唯一值 1 的值范围是 0.02 - 0.08,那么我想获取X 的值在给定值的范围内的所有值。我想制作一个包含这些过滤值的新数据框。(df1)YXdf1YXZdf2Y

这是一些示例代码和数据以使用示例

# 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仅包含.XXdf1Y (df3)

非常感谢任何帮助。

标签: rdataframefilterdplyr

解决方案


推荐阅读