Фильтр для значения столбца, если другой столбец содержит значение - PullRequest
2 голосов
/ 07 апреля 2020

По сути, я хотел бы отфильтровать столбец, если другой столбец содержит значение. Вот пример:

my_df <- data.frame(x = c(1,1,1,2,2,2),
           y = c(1,2,3,4,5,6)) 
> my_df
  x y
1 1 1
2 1 2
3 1 3
4 2 4
5 2 5
6 2 6

Давайте отфильтруем x!=1 тогда и только тогда, когда y!=1. Вот мой ожидаемый результат:

  x y
1 1 1
2 2 4
3 2 5
4 2 6

1 Ответ

1 голос
/ 07 апреля 2020

Мы можем использовать group_by filter здесь

library(dplyr)
my_df %>%
   group_by(x) %>% 
   filter(if(any(y == 1)) y == 1 else TRUE)
# A tibble: 4 x 2
# Groups:   x [2]
#      x     y
#  <dbl> <dbl>
#1     1     1
#2     2     4
#3     2     5
#4     2     6

Или, если его не нужно группировать по

my_df %>%
   filter( (x == 1 & y == 1)|(x !=1))

или с subset

subset(my_df,  (x == 1 & y == 1)|(x !=1))
#  x y
#1 1 1
#4 2 4
#5 2 5
#6 2 6

Или

subset(my_df,  (x == 1 & y == 1)|(x !=1 & y != 1))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...