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

如何统计整个DataFrame中指定字符串的出现次数?

统计DataFrame中特定字符串的总出现次数

你遇到的问题是因为grep("setosa", df)默认会处理数据框的列名,而你的列名里没有"setosa",所以返回空向量,长度为0。下面是几种可行的解决方案:

方法1:Base R 精确匹配(高效)

如果是完全匹配"setosa"这个字符串,直接将数据框转为一维向量后统计:

sum(unlist(df) == "setosa")
  • unlist(df)会把数据框的所有列拼接成一个连续的向量
  • == "setosa"生成布尔值向量,sum()自动将TRUE计为1、FALSE计为0,最终得到总次数

方法2:Base R 正则匹配(支持模糊匹配)

如果需要用正则表达式匹配(比如匹配包含"set"的字符串),可以用grepl结合矩阵转换:

sum(grepl("setosa", as.matrix(df)))
  • as.matrix(df)将数据框转为矩阵,grepl会逐元素检查是否匹配目标正则
  • 最后用sum()汇总所有匹配成功的次数

方法3:dplyr 风格统计

如果你习惯使用tidyverse工具链,可以遍历所有列统计后求和:

library(dplyr)

total_setosa <- df %>%
  summarize(across(everything(), ~sum(.x == "setosa"))) %>%
  rowSums()

total_setosa
  • across(everything(), ~sum(.x == "setosa"))对每一列单独统计"setosa"的出现次数,生成单行统计结果
  • rowSums()将各列的统计值相加,得到整个数据框的总次数

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 04:50:00