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

如何使用dplyr获取数据频率?附数据集与比例计算需求

计算tibble中各变量的选项占比(使用dplyr)

针对你想了解各数据占比的需求,这里提供一套基于dplyr的解决方案,步骤清晰且结果结构化:

首先,先把你的示例数据加载进来(如果已经有现成的数据框可以跳过这步):

library(dplyr)
library(tidyr)

# 你的示例tibble
df <- tibble(
  freqtools = c(5,5,5,5,5,5),
  freqtrees = c(5,2,4,4,5,5),
  freqrt = c(5,2,4,4,4,5),
  freqroamfriends = c(5,2,3,3,1,5),
  freqroamalone = c(5,5,4,2,1,5),
  freqparts = c(5,4,3,1,4,5),
  freqmessy = c(5,5,4,2,5,5),
  freqride = c(5,4,2,1,5,5),
  freqall = c(1,0,1,1,1,1),
  freqrain = c(5,5,1,2,3,2)
)

接下来是核心的占比计算代码:

proportion_df <- df %>%
  # 转成长格式,统一处理所有变量
  pivot_longer(cols = everything(), names_to = "variable", values_to = "value") %>%
  # 按变量+取值分组,统计每个组合的出现次数
  group_by(variable, value) %>%
  summarise(count = n(), .groups = "drop") %>%
  # 按变量分组,计算该变量下各取值的占比(转成百分比)
  group_by(variable) %>%
  mutate(proportion = count / sum(count) * 100) %>%
  # 排序让结果更易读
  arrange(variable, value)

# 查看最终结果
proportion_df

代码细节解释:

  1. pivot_longer:把原来的宽表转成长表,每个变量名和对应的取值成为独立行——这是批量处理多变量统计的关键,不用重复写代码处理每个单独变量。
  2. 分组统计次数:按variable(变量名)和value(变量取值)分组后,用n()统计每个取值的出现次数,.groups = "drop"用来清理分组状态,避免后续步骤受干扰。
  3. 计算占比:再次按variable分组,用每个取值的次数除以该变量的总次数,乘以100得到百分比形式的占比,直观展示分布情况。
  4. 排序整理:最后按变量名和取值排序,让结果的逻辑更清晰,方便对比查看。

如果需要让占比保留两位小数,优化可读性,可以修改mutate部分:

mutate(proportion = round(count / sum(count) * 100, 2))

运行后你会得到一个包含变量名、取值、出现次数和对应占比的tibble,完全满足你查看各数据占比的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:17:30