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

如何使用dplyr将因子水平分组计数结果保存为新变量

问题原因

你收到报错是因为count()是dplyr中用于统计数据框/分组整体行数的函数,不支持直接传入逻辑向量作为参数。你的需求是统计每个分组下符合条件的观测数,直接对逻辑向量使用sum()即可:逻辑值TRUE会自动转为1、FALSE转为0,求和结果就是符合条件的行数。
另外注意你需要的是每个a值对应一行的汇总结果,应该用summarise()做聚合,而不是mutate()(后者会保留原数据所有行,给每行重复添加统计值)。

解决方法

方法1:手动指定统计列(适合类别少的场景)

直接在summarise()中对每个类别求和即可:

library(dplyr)
df2 <- df %>%
  group_by(a) %>%
  summarise(
    number_acc = sum(b == "acc"),
    number_rej = sum(b == "rej"),
    number_con = sum(b == "con")
  )

方法2:自动识别所有类别(适合类别多的场景)

先统计每个a和b的组合计数,再转换为宽表,不需要手动逐个写求和逻辑:

library(dplyr)
library(tidyr)
df2 <- df %>%
  count(a, b, name = "cnt") %>%
  pivot_wider(
    names_from = b,
    values_from = cnt,
    names_prefix = "number_"
  )

两种方法输出的结果都和你期望的格式完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 14:15:05