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

请教R语言prop.table函数的通俗解释及响应表格应用方法

理解R的prop.table()函数并制作响应表格

一、prop.table()到底是干啥的?

说白了,它就是个自动算占比的工具:你先统计出各选项的人数(频数),把这个频数表丢给它,它直接帮你算出每个选项占总样本的比例,不用你手动挨个做除法。比如总共有100个受访者,35人选“非常同意”,它直接给你0.35(也就是35%)。

二、一步步做利益相关者响应表格

1. 准备你的数据

如果是模拟测试数据,用sample()生成:

# 模拟50个受访者的响应,选项对应你说的5种
responses <- sample(c("非常同意", "同意", "中立", "不同意", "非常不同意"),
                    size = 50,
                    replace = TRUE,
                    prob = c(0.25, 0.3, 0.2, 0.15, 0.1))

如果是真实数据,从文件导入(比如CSV):

# 假设你的数据存在response_data.csv里,响应列叫"opinion"
responses <- read.csv("response_data.csv")$opinion

2. 先做基础频数表

用table()函数统计每个选项的人数:

freq_table <- table(responses)
print(freq_table)
# 输出示例:
# responses
# 非常同意   同意   中立 不同意 非常不同意 
#        13     15      9      7        6 

3. 用prop.table()转成比例表

直接把刚才的频数表传进去,就能得到各选项的占比:

prop_table <- prop.table(freq_table)
print(prop_table)
# 输出示例(比例形式):
# responses
# 非常同意   同意   中立 不同意 非常不同意 
#     0.26   0.30   0.18   0.14    0.12 

要是想直接看百分比,给结果乘100就行:

percent_table <- prop_table * 100
print(percent_table)

4. 美化成易读的表格

默认的输出太生硬,我们把频数和百分比合并成规整的数据框,再用knitr::kable()输出好看的表格:

# 合并成数据框
result_df <- data.frame(
  响应选项 = names(freq_table),
  受访者数量 = as.numeric(freq_table),
  占比 = paste0(round(percent_table, 1), "%")
)

# 输出美观的表格
knitr::kable(result_df, align = "c")

输出的表格会是这样的规整格式:

响应选项受访者数量占比
非常同意1326.0%
同意1530.0%
中立918.0%
不同意714.0%
非常不同意612.0%

三、实用小补充

  • 如果你的数据是交叉表(比如不同行业的利益相关者的响应),prop.table()可以指定margin参数:prop.table(cross_table, margin = 1)是按行算占比(每个行业内部的响应占比),margin = 2是按列算占比(每个响应在不同行业的分布)。
  • 注意:prop.table()只认table类型的输入,必须先用table()或者xtabs()生成频数表,再传给它。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 13:17:23