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

在R中实现类似SAS PROC FREQ的计数加权汇总数据加载方法咨询

R实现SAS加权汇总数据处理等效方案

1. 加载汇总数据集

和SAS示例中的datalines输入逻辑完全对齐,可直接构造对应数据框:

# 构造与SAS示例一致的汇总计数数据集
q1 <- data.frame(
  resid = rep(c("urban", "rural"), each = 6),
  stress = rep(rep(c("low", "med", "high"), each = 2), 2),
  out = rep(c("fav", "unfav"), 6),
  count = c(55,34,66,64,107,89,40,25,57,47,88,60)
)

2. 等效PROC FREQ的加权频数表实现

两种常用实现方案可按需选择:

  • 基础包实现(无需额外安装依赖):
# 生成加权交叉表,可自行调整~后的变量匹配需求
weighted_table <- xtabs(count ~ resid + out, data = q1)
print(weighted_table)
# 按行/列计算百分比,margin=1为行百分比、margin=2为列百分比
prop.table(weighted_table, margin = 1)
  • janitor包实现(输出格式更贴合SAS PROC FREQ的频数+百分比组合展示):
# 首次使用需先安装包
# install.packages("janitor")
library(janitor)
q1 |> 
  tabyl(resid, out, wt = count) |> 
  adorn_percentages("row") |> 
  adorn_pct_formatting(digits = 1) |> 
  adorn_ns() # 同时展示原始计数和百分比

3. 等效PROC LOGISTIC的加权逻辑回归实现

R的广义线性回归函数原生支持计数权重,参数设置和SAS逻辑完全对齐:

# 先设置分类变量参考水平,和SAS的class ref参数完全匹配
q1$stress <- relevel(factor(q1$stress), ref = "low")
q1$resid <- relevel(factor(q1$resid), ref = "urban")
q1$out <- relevel(factor(q1$out), ref = "unfav")

# 拟合加权逻辑回归模型
logit_model <- glm(out ~ stress + resid, 
                   data = q1, 
                   family = binomial(link = "logit"),
                   weights = count)
# 查看模型系数输出
summary(logit_model)
# 输出OR值及95%置信区间
exp(cbind(OR = coef(logit_model), confint(logit_model)))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 15:48:03