如何在R中生成类似SAS PROC FREQ的BMI测量次数累积频率表
解决SAS中重复测量数据的分组频率统计问题
步骤1:计算每个受试者的测量次数
先统计每个受试者(按ID分组)的BMI测量次数,生成包含ID和对应测量次数的中间数据集:
/* 假设原始数据集名为bmi_data,包含变量subject_id(受试者ID)和bmi(BMI值) */ proc sql; create table measure_counts as select subject_id, count(*) as measure_num from bmi_data group by subject_id; quit;
步骤2:创建测量次数的分组变量
将测量次数分为三类:仅1次、仅2次、≥3次,生成分类变量measure_group:
data grouped_counts; set measure_counts; if measure_num = 1 then measure_group = '仅1次测量'; else if measure_num = 2 then measure_group = '仅2次测量'; else measure_group = '测量次数≥3次'; run;
步骤3:生成类似PROC FREQ的累积频率表
使用PROC FREQ生成包含频数、频率、累积频数、累积频率的表格,添加order=data保持分组顺序,nocol去掉列百分比(按需调整):
proc freq data=grouped_counts order=data; tables measure_group / missing nocol cum; title 'BMI测量次数分组频率统计'; run;
输出结果会包含:
- 各分组的受试者人数(频数)
- 各组占总人数的百分比(频率)
- 累积到当前组的总人数(累积频数)
- 累积到当前组的总百分比(累积频率)
补充说明
- 如果原始数据存在缺失的BMI值,可在PROC SQL中添加
where bmi is not missing过滤,避免将缺失值计入测量次数。 - 若需要更简洁的分组标签(如"1次"、"2次"、"≥3次"),直接修改
measure_group的赋值内容即可。
内容的提问来源于stack exchange,提问作者Ko Htut
相关产品推荐
相关产品推荐

