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

如何在data.table中替换跨行重复值为缺失值?

处理data.table跨行重复值替换为缺失值

针对你的data.table数据,要将同一列中重复出现的非"0"值替换为缺失值,可以用以下data.table原生操作实现:

library(data.table)

# 对除Node外的列处理,保留每列首次出现的非0值,后续重复项替换为NA
result_wide[, (colnames(result_wide)[-1]) := lapply(.SD, function(col) {
  # 标记重复且非0的位置
  duplicate_mask <- duplicated(col) & col != "0"
  col[duplicate_mask] <- NA_character_
  col
}), .SDcols = colnames(result_wide)[-1]]

代码说明

  • colnames(result_wide)[-1]指定除Node列外的所有目标列,避免处理行标识列
  • lapply(.SD, ...)遍历每一列,对列内数据做针对性处理
  • duplicated(col)识别列内重复元素,结合col != "0"排除原本的"0"占位值,只标记有效内容的重复项
  • 将标记的重复位置赋值为NA_character_(字符型缺失值,匹配原数据的字符类型)

执行后,以1列为例,原本跨行重复的"Mario"只会保留首次出现的记录,后续重复项都会被替换为NA。

内容的提问来源于stack exchange,提问作者KArrow'sBest

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 10:10:31