记得刚入门SAS时候,有一次面试,其中有一道题目就是行列变换。当时作为一名最初学者自然不知道还有这种风骚操作,更不知道这种操作有什么用,面试的结果自然是不通过。后来知道了行列变换可以用proc transpose一键搞定,但其参数配置之复杂,每次使用都要重新学习,十分不方便(这也从侧面证明了该过程步之强大,涵盖范围之广)。再后来学习姚志勇老师的课程,姚老师教导我们,“要知其然知其所以然”,“任何过程步本质上是在程序后台运行数据步”,本着学以致用的原则,我们就在实际案例中练习一下。
列转行
假设我们经营着一家全国性大企业(好牛逼的样子),一共有北京、上海、深圳等7个分部,对应7个城市,每个分部每个月都有自己的指标,1月份100,2月份200,以此类推,模拟数据表tgt_by_city_by_mon如下:通过行列变换我们最终得到的表target共有3列,一列表示城市city,一列表示月份month,一列表示指标target,代码如下:
data les.target;
set.tgt_by_city_by_mon;
array mon {
*} $ m1 m2 m3 m4 m5 m6 m7 m8 m9 m10 m11 m12 ('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov'