You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在填充缺失值后按指定运营商进行数据分组(含SAS代码)

针对运营商分组的SAS实现方案

没问题!你已经用proc stdize搞定了缺失值填充的关键一步,接下来只需要在补全好的数据集基础上,按carrier做分组分析就行,我给你两种SAS里常用的实现方式:

首先,先帮你修正下缺失值填充代码里的小细节(SAS变量列表用空格分隔而非逗号),确保语法正确:

proc stdize data=mydata.original_data reponly method=mean out=Complete_data;
    var total_travel_time arrival_delay; /* SAS变量间用空格分隔,已调整避免语法错误 */
run;

补充说明:reponly参数确保只替换缺失值不做标准化,method=mean会用对应变量的均值填充缺失值,生成的Complete_data就是我们后续分组要用的干净数据集。

方法1:用PROC SQL自定义分组统计

如果你需要灵活自定义分组后的统计内容(比如每个运营商的平均旅行时间、延误时长、总航班数),PROC SQL是绝佳选择:

proc sql;
    create table carrier_grouped_results as
    select 
        carrier,
        count(*) as total_flights label='总航班数',
        mean(total_travel_time) as avg_travel_time format=8.2 label='平均旅行时间',
        mean(arrival_delay) as avg_arrival_delay format=8.2 label='平均到达延误'
    from Complete_data
    group by carrier; /* 按运营商名称分组 */
quit;

这个代码会生成一个新数据集,每条记录对应一个运营商的统计结果,格式清晰便于后续分析。

方法2:用PROC MEANS快速生成多维度分组统计

如果只需要常用统计指标(均值、中位数、总和等),PROC MEANS更简洁高效,适合快速输出批量统计结果:

proc means data=Complete_data n mean median sum maxdec=2;
    class carrier; /* 指定分组变量为运营商 */
    var total_travel_time arrival_delay; /* 指定要分析的目标变量 */
    output out=carrier_stats_summary /* 将统计结果保存到数据集 */
        mean=avg_travel avg_delay
        median=med_travel med_delay;
run;
  • n计算每组的记录数,mean/median分别计算均值和中位数
  • maxdec=2控制输出结果保留两位小数
  • output语句可以把统计指标映射成自定义命名的变量,方便后续调用

这样就能轻松完成「缺失值填充+按运营商分组」的完整需求啦!

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

火山引擎 最新活动