【发布时间】:2021-07-05 08:59:43
【问题描述】:
我想按在某个变量中表现出最大值的一定数量的用户过滤分组数据集。该变量的值在组内没有变化。
简单示例:假设有 3 个个人,我们观察他们的访问总数。
da = data.frame(id = c(1,1,1,2,2,2,3,3,3), n_visits = c(3,3,3,2,2,2,1,1,1))
da
id n_visits
1 1 3
2 1 3
3 1 3
4 2 2
5 2 2
6 2 2
7 3 1
8 3 1
9 3 1
现在我要选择访问次数最多的 2 个用户,在我的示例中是 id 为“1”和“2”的用户。
我尝试了“top_n”函数,但它输出了三个人的数据。
da %>% group_by(id) %>%
top_n(2, n_visits)
# A tibble: 9 x 2
# Groups: id [3]
id n_visits
<dbl> <dbl>
1 1 3
2 1 3
3 1 3
4 2 2
5 2 2
6 2 2
7 3 1
8 3 1
9 3 1
我期望的输出是:
id n_visits
<dbl> <dbl>
1 1 3
2 1 3
3 1 3
4 2 2
5 2 2
6 2 2
【问题讨论】: