首页 > 解决方案 > 具有组条件的累积 n_distinct

问题描述

我正在尝试构建一个列,其中包含该组至少访问过两次的不同 URL 的累积数量。我怎么做?

我的数据框看起来像这样:

ID Link                 RevisitedPages
1  example.org          0
1  example.org/whatever 0
1  example.org/blank    0
1  example.org/whatever 1
1  example.org/whatever 1
1  example.org/blank    2

标签: rdplyr

解决方案


我们可能会使用以下内容:

df %>% group_by(ID, Link) %>% 
  mutate(RevisitedPages = 1 * (row_number() == 2)) %>%
  group_by(ID) %>% mutate(RevisitedPages = cumsum(RevisitedPages))

# A tibble: 6 x 3
# Groups:   ID [1]
#      ID Link                 RevisitedPages
#   <int> <fct>                         <dbl>
# 1     1 example.org                       0
# 2     1 example.org/whatever              0
# 3     1 example.org/blank                 0
# 4     1 example.org/whatever              1
# 5     1 example.org/whatever              1
# 6     1 example.org/blank                 2

这样,我们首先查看每个 (ID, Link) 对,如果存在,则将 1 放入第二次访问。然后单独按 ID 分组,我们使用 cumsum。


推荐阅读