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

如何使用dplyr统计各name对应的value频数并生成指定宽表?

使用dplyr实现长格式数据的频次统计与宽格式转换

先构造你提供的示例数据集:

library(dplyr)
library(tidyr)

df <- tibble(
  name = c("A", "B", "C", "A", "B", "C"),
  value = c(3, 2, 3, 2, 2, 3)
)

可以通过以下步骤实现需求:

result <- df %>%
  # 统计每个name-value组合的出现次数
  count(name, value, name = "count") %>%
  # 补全所有需要的value值(1到原数据最大value)及所有name的组合,缺失频次填0
  complete(value = 1:max(value), name = unique(name), fill = list(count = 0)) %>%
  # 转换为宽格式,缺失值填充0
  pivot_wider(names_from = name, values_from = count, values_fill = 0) %>%
  # 按value排序,匹配目标表格顺序
  arrange(value)

运行后得到的结果:

# A tibble: 3 × 4
  value     A     B     C
  <dbl> <int> <int> <int>
1     1     0     0     0
2     2     1     2     0
3     3     1     0     2

步骤说明:

  • count(name, value, name = "count"):统计每个name与value组合的出现次数,将结果列命名为count。
  • complete(...):生成所有value(从1到原数据中的最大value)和所有name的完整组合,确保未出现过的value=1也能被包含,同时将缺失的频次设为0。
  • pivot_wider(...):将长格式数据转为宽格式,把name的各个取值(A/B/C)作为列名,count作为对应列的数值,所有缺失位置填充0。
  • arrange(value):按value列升序排序,让结果和目标表格顺序一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 01:15:37