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

使用dplyr保留重复行并将指定列重复值置空的实现方法

dplyr实现方案

核心逻辑

按前3列分组后,仅保留每组第一行的前3列原值,分组内其余行的前3列统一置为空值,第4列全程保留原值不做修改。

完整代码

首先加载依赖包:

library(dplyr)

先构造你给出的示例数据集方便测试:

df <- tibble(
  Col1 = c(101, 101, 303, 404),
  Col2 = c("Dog", "Dog", "Cat", "Dog"),
  Col3 = c("Sep", "Sep", "Oct", "Sep"),
  Col4 = c("Grooming", "Birthday", "Birthday", "Grooming")
)

执行数据转换:

df_result <- df %>%
  # 按前3列分组识别重复行
  group_by(Col1, Col2, Col3) %>%
  # 前3列仅保留组内第一行的值,其余行置空
  mutate(across(1:3, ~ifelse(row_number() == 1, as.character(.), ""))) %>%
  # 取消分组避免后续操作受影响
  ungroup()

说明

  • 代码中across(1:3)对应前3列,不需要手动写列名,列结构变化时只需修改索引范围即可
  • 用as.character()转换是为了统一列类型(空字符串为字符型),如果你可以接受NA值作为空值,可以去掉转换,直接写~ifelse(row_number() == 1, ., NA)即可
  • 输出结果和你给出的预期格式完全一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 07:21:02