使用SAS解决统计问题:如何输入区间形式数据并绘制频率分布直方图

SAS区间数据处理及频率直方图实现方案
1. 区间数据输入设置
根据区间数据的存储形式,可选择对应输入方式:
- 若已明确给出区间上下限和对应频数,直接构造数据集即可:
/* 构造区间原始数据集 */ data interval_data; input lower upper freq; /* lower为区间左端点,upper为区间右端点,freq为对应区间频数 */ datalines; /* 此处替换为你自己的区间数据,一行对应一个区间 */ 10 20 12 20 30 25 30 40 18 40 50 9 50 60 5 ; run;
- 若区间以字符串形式存储(如
10-20),可先拆分得到上下限:
/* 处理字符串格式的区间数据 */ data string_interval; input interval_str $ freq; lower = input(scan(interval_str,1,"-"),best32.); /* 提取左端点 */ upper = input(scan(interval_str,2,"-"),best32.); /* 提取右端点 */ datalines; 10-20 12 20-30 25 30-40 18 ; run;
2. 频率分布直方图绘制
使用proc sgplot结合频数权重即可直接基于区间数据生成直方图,无需展开为单条观测:
/* 绘制频数分布直方图 */ proc sgplot data=interval_data; title "区间数据频率分布直方图"; histogram lower / freq=freq /* 指定频数权重变量 */ binwidth=10 /* 与你的区间宽度保持一致 */ binstart=10 /* 与第一个区间的左端点保持一致 */ dataskin=crisp; xaxis label="数值区间"; yaxis label="频数"; run; quit;
如果需要输出频率占比而非绝对频数,在histogram语句中添加scale=percent参数即可。
内容的提问来源于stack exchange,提问作者Christina
相关产品推荐
相关产品推荐

