Выбор дел, которые имеют 2 или более - PullRequest
1 голос
/ 21 февраля 2020

Это должно быть просто, но я в замешательстве.

df <- data.frame(date=rep(1:3,1),
             RID=rep(c("Amy", "Bob"), each=3),
             A=c(1, 3, 1, NA, 1, 1))`


   date | RID   |A|
    1   |Amy    |1|
    2   |Amy    |3|
    3   |Amy    |1|
    1   |Bob    |NA|
    2   |Bob    |1|
    3   |Bob    |1|

Я просто хочу выбрать RID, которые имеют один (или более) 1 и 3 (значения только 1, 3 или NA ) в столбце «А».

это должно быть выполнено с чем-то вроде ниже, но я не смог заставить его работать.

dplyr::
df%>%group_by %>% filter ( ?????? )

1 Ответ

1 голос
/ 21 февраля 2020

Мы можем сгруппировать по 'RID' и проверить, есть ли all из 1, 3 %in% Столбец

library(dplyr)
df %>%
   group_by(RID) %>% 
   filter(all(c(1, 3) %in% A))
# A tibble: 3 x 3
# Groups:   RID [1]
#   date RID       A
#  <int> <fct> <dbl>
#1     1 Amy       1
#2     2 Amy       3
#3     3 Amy       1

data

df <- structure(list(date = c(1L, 2L, 3L, 1L, 2L, 3L), RID = structure(c(1L, 
1L, 1L, 2L, 2L, 2L), .Label = c("Amy", "Bob"), class = "factor"), 
    A = c(1, 3, 1, NA, 1, 1)), class = "data.frame", row.names = c(NA, 
-6L))
...