使用SAS数据步进行行列变换

本文介绍了如何使用SAS数据步进行行列变换,包括列转行和行转列的操作。列转行示例展示了如何将城市和月份的指标数据转换为城市、月份和指标值三列。行转列时,通过do循环和retain处理缺失数据,实现完整的行列转换。文章强调理解数据步的重要性,并引用姚志勇老师的建议,提倡自定义数据步以提高效率。
摘要由CSDN通过智能技术生成

记得刚入门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'
  • 4
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值