Фильтрация с использованием пакета dplyr - PullRequest
0 голосов
/ 26 февраля 2019

Мой набор данных настроен следующим образом:

User   Day
 10      2
 1       3
 15      1
 3       1
 1       2
 15      3
 1       1

Я пытаюсь выяснить пользователей, которые присутствуют все три дня.Я использую код ниже, используя пакет dplyr:

MAU%>%
  group_by(User)%>%
  filter(c(1,2,3) %in% Day)   

  # but get this error message: 
  # Error in filter_impl(.data, quo) : Result must have length 12, not 3

Есть идеи, как это исправить?

Ответы [ 2 ]

0 голосов
/ 26 февраля 2019

Мы можем использовать all, чтобы получить одно ИСТИНА / ЛОЖЬ из логического вектора 1:3 %in% Day

library(dplyr)
MAU %>% 
    group_by(User)%>%
    filter(all(1:3 %in% Day))
# A tibble: 3 x 2
# Groups:   User [1]
#   User   Day
#  <int> <int>
#1     1     3
#2     1     2
#3     1     1

данные

MAU <- structure(list(User = c(10L, 1L, 15L, 3L, 1L, 15L, 1L), Day = c(2L, 
 3L, 1L, 1L, 2L, 3L, 1L)), class = "data.frame", row.names = c(NA, 
 -7L))
0 голосов
/ 26 февраля 2019

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

library(dplyr)

DF %>%
  distinct %>%
  count(User) %>%
  filter(n == 3) %>%
  select(User)

, дающих:

# A tibble: 1 x 1
   User
  <int>
1     1

Примечание

Lines <- "
User   Day
 10      2
 1       3
 15      1
 3       1
 1       2
 15      3
 1       1"
DF <- read.table(text = Lines, header = TRUE)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...