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

如何统计R数据框每行相对全数据集的唯一与歧义元素数量

R DataFrame跨行唯一/歧义元素统计实现方法

核心思路

  • 先统计全数据集中所有非NA元素的全局出现频次
  • 逐行遍历每行非NA元素,根据全局频次分别统计Unique(全局仅出现1次)和Ambiguous(全局出现大于1次)元素数量

代码实现

# 示例数据
df <- data.frame(
  col1 = c('Ab', 'Cd', 'Ef', 'Gh', 'Ij'),
  col2 = c('Ac', 'Ce', 'Eg', 'Gi', 'Ik'), 
  col3 = c('Acc', NA, 'Ab', 'Gef', 'Il'), 
  col4 = c(NA, NA, NA, 'Ce', 'Im')
)

# 1. 统计所有非NA元素的全局出现次数
all_values <- unlist(df)
all_values <- all_values[!is.na(all_values)]
value_counts <- table(all_values)

# 2. 逐行计算两列统计值
df$Unique <- apply(df, 1, function(row) {
  row_vals <- row[!is.na(row)]
  sum(value_counts[row_vals] == 1)
})

df$Ambiguous <- apply(df, 1, function(row) {
  row_vals <- row[!is.na(row)]
  sum(value_counts[row_vals] > 1)
})

结果验证

运行代码后输出的df完全符合题目要求的预期结果:

col1col2col3col4UniqueAmbiguous
AbAcAccNA21
CdCeNANA11
EfEgAbNA21
GhGiGefCe31
IjIkIlIm40

该方案对数千行、近百列的数据集处理效率足够,无需额外依赖包。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 11:36:04