使用PROC TRANSPOSE转置数值列同时保留日期与HourEnd字段
SAS实现长表转指定结构宽表方案
前置准备
假设原始数据集名称为have,首先需要按分组字段排序,保证转置时分组逻辑正常运行:
proc sort data=have; by Date HourEnd; run;
转置实现代码
直接使用PROC TRANSPOSE即可实现需求,参数配置如下:
proc transpose data=have out=want(drop=_NAME_) prefix=Meter; by Date HourEnd; id Meter_ID; var Value; run;
参数说明
by Date HourEnd:指定分组维度,每个唯一的日期+小时组合对应输出数据集的一行,自动保留两个字段的原始值id Meter_ID:指定用Meter_ID的取值作为新生成列的名称后缀prefix=Meter:给新生成的列增加统一前缀,最终生成Meter100、Meter200、Meter300的列名,完全符合输出要求var Value:指定需要转置填充到新列的数值为原Value字段drop=_NAME_:去掉PROC TRANSPOSE默认生成的_NAME_冗余字段,不需要清理冗余可直接删除该配置
内容的提问来源于stack exchange,提问作者C McCown
相关产品推荐
相关产品推荐

