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

使用R语言pivot_wider()转换宽表并统计出现次数的问题

pivot_wider() 统计月份出现次数的正确配置方案

  • 你当前的需求是统计每个State下不同Month的出现次数,pivot_wider()本身不会自动执行聚合计数逻辑,需要额外指定计数规则
  • 原有代码错误原因:仅指定values_from = "Month"没有绑定计数结果作为填充值,仅按State分组也无法匹配到对应月份的统计值

方法1:提前计算分组计数再转宽(可读性更高,更推荐)

先通过count()统计每个State+Month组合的出现次数,再把计数结果作为values_from的参数:

library(dplyr)
library(tidyr)

Data <- fm %>%
  # 统计每个State和Month组合的出现次数,结果存在occur_times列
  count(State, Month, name = "occur_times") %>%
  # 转宽表:列名来自Month,单元格值为对应月份的出现次数,无记录自动填充0
  pivot_wider(
    names_from = Month,
    values_from = occur_times,
    values_fill = 0
  )

方法2:转宽时同步完成计数

可以通过values_fn参数直接在pivot_wider()内实现计数,不需要提前做分组统计:

Data <- fm %>%
  pivot_wider(
    id_cols = State,
    names_from = Month,
    values_from = Month,
    # 指定按length统计每个分组的元素个数即出现次数
    values_fn = length,
    values_fill = 0
  )

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 16:57:03