Фильтровать значения во фрейме данных на основе диапазона уникальных значений из другого фрейма данных - PullRequest
0 голосов
/ 24 апреля 2020

У меня есть два больших фрейма данных (nrow = 20,000), с общими переменными в каждом (X, Y and Z). Каждый фрейм данных имеет несколько уникальных значений одной переменной (Y), но значения X and Z отличаются. Я хотел бы отфильтровать один кадр данных (больший из двух (df2)) по диапазону значений X в меньшем кадре данных (df1) для каждого уникального значения Y. Так, например, если диапазон значений X в df1 для уникального значения Y 1 равен 0,02 - 0,08, то я хотел бы получить все значения X и Z из df2 где значение X попадает в этот диапазон для данного значения 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, которые находятся в диапазоне значений X в df1 для каждого значения Y (df3) .

Любая помощь с благодарностью.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...