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

如何用dplyr统计dataframe列中指定变量的出现次数?

我们有一个名为myData的dataframe:

> myData
  Element Class
1       A     0
2       A     0
3       C     0
4       A     0
5       B     1
6       B     1
7       A     2

生成该数据的代码:

myData = data.frame(Element = c("A","A","C","A","B","B","A"),Class = c(0,0,0,0,1,1,2))

现在需要用dplyr提取Element列中"A"的出现次数,要求直接返回数字4,而非包含额外信息的tibble(原代码返回的tibble如下):

# A tibble: 1 x 2
  Element counted
  <chr>     <int>
1 A             4

原代码:

library(dplyr)
myData %>% group_by(Element) %>% filter(Element == "A") %>% summarise(counted = n())

优化方案

以下几种方法都能直接返回数字4,适配后续dplyr链式操作:

方案1:过滤后统计行数

直接筛选出Element为"A"的行,再用nrow()统计行数:

library(dplyr)
myData %>% filter(Element == "A") %>% nrow()

方案2:求和+提取结果

通过summarise计算匹配次数,再用pull()把结果从tibble中提取为单个数值:

myData %>% 
  summarise(count = sum(Element == "A")) %>% 
  pull(count)

注:sum(Element == "A")会将逻辑向量(匹配为TRUE,不匹配为FALSE)转换为数值求和,TRUE对应1,FALSE对应0,直接得到"A"的出现次数。

方案3:简洁链式写法

直接提取Element列,生成逻辑向量后求和:

myData %>% pull(Element) %>% (`==`("A")) %>% sum()
# 更易读的等价写法:
myData %>% pull(Element) %>% equals("A") %>% sum()

方案4:count函数+提取

先用count()统计各元素的出现次数,再筛选出"A"的行并提取计数:

myData %>% count(Element) %>% filter(Element == "A") %>% pull(n)

内容的提问来源于stack exchange,提问作者Curious Jorge - user9788072

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 11:57:17