首页 > 解决方案 > 使用 dplyr 包过滤

问题描述

我的数据集设置如下:

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

知道如何解决吗?

标签: rdplyr

解决方案


使用最后在注释中可重复显示的输入,计算不同的用户并过滤掉那些有 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)

推荐阅读