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

如何在R中统计data.frame各列中特定值'?'的出现次数

问题原因说明

你之前计数错误的核心原因有两个:

  1. 你的数据集是tibble结构,用[,列号]取列返回的是子tibble而非向量,逻辑判断时会出现不符合预期的结果,应该用[[列号]]或者$列名取向量。
  2. 从你打印的单元格结果来看,存储的?自带单引号,实际值是'?'而非纯?,所以直接判断== "?"无法匹配。

可行解决方案

方法1:精确匹配(计数最准确,推荐)

根据你实际存储的字符选择对应代码即可实现逐列统计:

# 匹配值为纯?的单元格
colSums(sapply(phpvqZpLa, function(col) col == "?"), na.rm = TRUE)

# 匹配值为带单引号'?'的单元格,适配你当前的数据集
colSums(sapply(phpvqZpLa, function(col) col == "'?'"), na.rm = TRUE)

方法2:模糊匹配(避免隐藏字符/空格干扰)

如果存在值前后带空格、或者有其他隐藏字符的情况,可以用模糊匹配统计所有含?的单元格:

colSums(sapply(phpvqZpLa, function(col) grepl("\\?", col)), na.rm = TRUE)

其他说明

  • frequency()是时间序列场景专用函数,用来统计单位时间内的样本量,不适合用来做普通值的频次统计,之前的使用不符合函数设计场景。
  • 如果你想用table()实现也可以,单列统计可以写为table(phpvqZpLa[[6]], useNA = "ifany")["'?'"],多列的话套入sapply即可使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 15:54:00