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

R语言基于两列重复值创建唯一ID新列处理重复数据

R 按分组生成自定义name列的dplyr实现

数据已经提前按调研时间排好序,不需要复杂的重复值标记,直接按subject_id和day分组后给组内行按顺序编号,再拼接对应取值就行,全程只用dplyr就能完成。

代码实现

library(dplyr)

df <- df %>%
  group_by(subject_id, day) %>%
  mutate(
    # 组内按现有行顺序生成序号,对应调研先后次序
    group_seq = row_number(),
    name = case_when(
      group_seq == 1 ~ as.character(day),
      TRUE ~ paste0(day, " -", group_seq)
    )
  ) %>%
  ungroup() %>%
  select(-group_seq)

结果说明

用给出的重复样例跑出来的结果完全匹配要求:

  • subject_id=01、day=1的两条记录,name分别为"1"和"1 -2"
  • 其余无重复的记录,name直接取对应day的字符值

适配边界场景

  • 后续如果遇到同个受试者同一天填了3次及以上调研的情况,代码会自动生成"1 -3"、"1 -4"格式的取值,不需要额外修改
  • 如果需要统一给所有值加序号后缀(第一条显示为"1 -1"),直接把name的生成逻辑改成paste0(day, " -", group_seq)即可,符合提到的可接受带-1后缀的要求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 23:45:56