You need to enable JavaScript to run this app. 用dplyr实现按id分组判断string是否等于组内任意历史滞后值
优惠活动
大模型
产品
解决方案
定价
更多

用dplyr实现按id分组判断string是否等于组内任意历史滞后值

按分组标记当前值是否在组内既往出现的dplyr实现方案
  • 处理规则:按id字段完成数据集分组后,逐行判断当前行的string值,是否在同分组内排在当前行之前的任意行中出现过
  • 适配场景:各组样本数量不固定,无预设组长度假设
  • 实现优先级:优先采用dplyr语法完成逻辑开发

输入输出匹配示例

示例输入数据集代码:
df <- data.frame(id = c(1,1,1,1,2,2,2), string = c('a','b','b','a','a','a','b'))
对应期望输出结果:c(FALSE, FALSE, TRUE, TRUE, FALSE, TRUE, FALSE)

可直接运行的实现代码

# 加载dplyr包
library(dplyr)
# 完成分组计算
df <- df %>%
  group_by(id) %>%
  # 生成标记列:判断当前值是否在同组既往行中出现过
  mutate(is_repeated = duplicated(string)) %>%
  ungroup()

实现逻辑说明

  • group_by(id)会自动适配不同长度的分组样本,不需要提前设定每组的行数
  • 组内的duplicated(string)函数逐行计算:当当前行的string值在组内从首行到当前行上一行的区间中已存在时,返回TRUE,否则返回FALSE
  • 运行代码后生成的is_repeated列取值,与示例期望结果完全匹配

内容的提问来源于stack exchange,提问作者Jirka Čep

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.08 08:15:05