Фильтрация с использованием dplyr filter () по нескольким условиям - PullRequest
0 голосов
/ 05 июля 2018

У меня есть фрейм данных, содержащий уникальные значения двух переменных:

df <- data.frame(V1=LETTERS,V2=c(1:26))

Я бы хотел отфильтровать другой фрейм данных для значений в df$V1 и соответствующего значения df$V2. Это то, что я пробовал, что, очевидно, не дает желаемого результата:

df2 <- data.frame(V1=c('A','A','B','B','A'),
                    V2=c(1,2,2,3,4))
df2 %>% filter(V1 %in% unique(df$V1) & V2 %in% unique(df$V2))

Результат, ожидаемый после фильтрации:

  V1 V2
1  A  1
2  B  2

Как мне этого добиться?

Ответы [ 3 ]

0 голосов
/ 05 июля 2018

Вы также можете использовать

df[df$V1 %in% unique(df2$V1),]

#   V1 V2
# 1  A  1
# 2  B  2

или

library(tidyverse)

df %>% filter(V1 %in% unique(df2$V1))

#   V1 V2
# 1  A  1
# 2  B  2

В обоих случаях выше, вы получите строки df, где V1 из df соответствует (уникальным) значениям V1 из df2.

0 голосов
/ 05 июля 2018

Другой вариант - intersect

library(dplyr)
intersect(df, df2)
#  V1 V2
#1  A  1
#2  B  2

Или используя data.table (при условии, что оба являются объектами data.table и имеют одинаковые атрибуты)

library(data.table)
fintersect(df, df2)
#   V1 V2
#1:  A  1
#2:  B  2
0 голосов
/ 05 июля 2018
merge(df,df2)
  V1 V2
1  A  1
2  B  2

library(tidyverse)
inner_join(df,df2)
  V1 V2
1  A  1
2  B  2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...