一般数据库的设计是从系统稳定和效率的角度来设计,而分析主要考虑到分析方法或者应用软件所容易接受的数据结构。因此,多多少少要进行些数据结构的调整。其中行列转换就是最常用使用的步骤。
本例子中讨论如何将类别变量的值转变为变量,比如要将下图中左边表中的2003年6月的checking账户变为行变量。这样就会生成以下几个字段:
Customer ID, C6,C7,C8,S6,S7,S8,C6代表6月的Checking账户,S6代表6月的Savings账户。(这里先不讨论,为什么要这样,只先讨论,要实现这样,需要怎么做)
这个转换叫做(Multilevel Rollup)因为转换了Date和Acccount Type两个变量,如果只转换1个变量,则为(Simple RollUp)
【程序实现】
1.数据程序在教材P75页,从PDF中COPY的文字,没有换行,懒得去处理了,有兴趣的自己动手。
2.计算月份变量
data Trans;set Transaction;Month = month(TransDate);run;
3.按分类字段进行排序,以便做汇总。交易数据一般是按发生时间进行记录的,因此,需要按分析时间要求进行汇总,如按天或者按月。
proc sort data=Trans;by CustID month AccountType;run;
4.按用户、月份、以及账户类型进行汇总。这里使用到了first.variable last.variable retain PDV OUTPUT等这些基础知识点,如果不清楚,可以参考SAS Training Kits:PROG II,里面有很详细的说明。这个方法是SAS DAT