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

在R中按ID分组取最小日期并结合data.frame筛选的实现方法

解决方法

步骤1:筛选并聚合目标数据

推荐使用dplyr包完成筛选、分组和聚合操作(未安装的话先运行install.packages("dplyr")):

library(dplyr)

# 筛选交互类型为email_sent的记录,按ID分组取最小Created.At
agg_data <- A %>%
  filter(Interaction.Type == "email_sent") %>%
  group_by(ID, Student) %>%  # 假设同一ID对应唯一Student,若需调整可仅按ID分组
  summarise(min_created_at = min(Created.At, na.rm = TRUE), .groups = "drop")

说明:

  • filter先提取出Interaction.Type为email_sent的有效记录
  • group_by按ID(和Student)分组,保证后续聚合针对每个独立ID
  • summarise计算每组的最早创建时间,na.rm=TRUE用于忽略空值,.groups="drop"取消分组状态

步骤2:匹配指定ID并填充缺失值

通过左连接关联表B的ID列表,缺失字段自动填充为R中的NA(对应需求里的Null):

final_output <- B %>%
  left_join(agg_data, by = "ID")

如果需要将NA替换为字符串"Null",可追加以下代码:

final_output <- final_output %>%
  mutate(across(c(Student, min_created_at), ~ifelse(is.na(.), "Null", .)))

原代码无法运行的原因

你的代码存在几个核心问题:

  • 逻辑混乱:直接用data.frame()构造结果,没有先完成筛选和分组的流程
  • 语法错误:聚合函数应为小写的min(),而非大写Min()
  • 用法错误:group_by(ID)不能直接作为data.frame()的参数,需要结合管道或分组操作逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 10:17:25