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

如何在R中通用识别数据表中所有值一致的列?

识别data.table中所有值完全相同的列

需求说明

需要识别data.table中所有条目值完全一致的列,涵盖以下场景:

  • 全NA列
  • 固定数值列(如0、1、999等)
  • 固定字符/空字符串列(如"E"、""等)
    现有代码仅能单独识别全NA、全0、全1列,需通用解决方案,无需针对每种重复值单独编写逻辑。

示例数据

library(data.table)
library(random)

AlphaNum <- randomStrings(n=10, len=3, digits=T, upperalpha=T, loweralpha=TRUE, unique=F, check=T)
tat <- data.table(
  Nums=1:10, 
  blankr1=rep(NA,10), 
  Leters=LETTERS[1:10], 
  niner=rep(999,10), 
  blankr2=rep('',10), 
  Er=LETTERS[5],
  AlphaNum=AlphaNum,
  AlphaNumr=rep('9e4UU',10),
  zeror=rep(0,10), 
  oner=rep(1,10)
)

通用解决方案

# 识别所有值完全相同的列
uniform_cols <- names(tat)[tat[, lapply(.SD, function(x) length(unique(x)) == 1)]]
# 输出结果
uniform_cols

代码说明

  • 核心逻辑:对每一列计算唯一值的数量,若数量为1,则说明该列所有条目值完全相同(包括全NA的情况,因为unique(rep(NA,10))返回长度为1的NA向量)。
  • 通用性:无需区分数据类型,也不用针对特定固定值编写判断,一次处理所有符合条件的列。
  • 输出:直接返回所有符合条件的列名。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 13:21:10