You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用dplyr分组判断课程最新注册者是否为新用户

用dplyr判断每门课程最新注册者是否为新用户

需求说明

现有记录不同人员在不同时间段注册4门课程的数据集,需要通过dplyr分组处理,判断每门课程的最新注册者是否为该课程的新用户(此前未注册过该课程)。

示例数据集

df <- data.frame(course=c(1,2,3,4,1,2,3,4,1,2,3,4,1,2,3,4),
                 name=c("jessica","alex","rose","sam","paul","steve","sarah","julia","paul","alex","helen","adam",
                     "jessica","moe","rose","dave"),
                 date=as.Date(c("2023-02-10","2022-10-10","2022-10-10","2022-10-10","2022-11-10","2023-02-10","2022-11-10",
                                "2022-11-10","2022-12-10","2022-12-10","2022-12-10","2022-12-10","2022-10-10",
                                "2022-11-10","2023-02-10","2023-02-10")) )  

按课程和日期排序后的数据:

df %>% arrange(course, date)

输出:

course    name       date
1       1 jessica 2022-10-10
2       1    paul 2022-11-10
3       1    paul 2022-12-10
4       1 jessica 2023-02-10
5       2    alex 2022-10-10
6       2     moe 2022-11-10
7       2    alex 2022-12-10
8       2   steve 2023-02-10
9       3    rose 2022-10-10
10      3   sarah 2022-11-10
11      3   helen 2022-12-10
12      3    rose 2023-02-10
13      4     sam 2022-10-10
14      4   julia 2022-11-10
15      4    adam 2022-12-10
16      4    dave 2023-02-10

解决方法

使用dplyr的分组、排序和统计功能,步骤如下:

  1. 按课程分组,对每组内的记录按日期排序
  2. 获取每组最新注册的用户(即排序后的最后一条记录的用户)
  3. 统计该用户在当前课程组内的注册次数,若仅为1次则是新用户(标记为1),否则不是(标记为0)
  4. 去重并整理结果

完整代码

library(dplyr)

# 处理逻辑
result <- df %>%
  group_by(course) %>%
  arrange(date) %>%
  # 获取当前课程的最新注册用户
  mutate(latest_name = last(name)) %>%
  # 判断该用户是否仅注册过一次
  mutate(new_registered = as.integer(sum(name == latest_name) == 1)) %>%
  # 保留每个课程的唯一结果
  distinct(course, new_registered) %>%
  ungroup()

# 输出结果
print(result)

输出结果

# A tibble: 4 × 2
  course new_registered
   <dbl>          <int>
1      1              0
2      2              1
3      3              0
4      4              1

该结果完全符合预期:课程1和3的最新注册者此前已注册过(标记0),课程2和4的最新注册者是新用户(标记1)。

内容的提问来源于stack exchange,提问作者Alex

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 00:42:15