SAS:将窄数据集转换为宽数据集

时间:2016-12-16 03:31:38

标签: database-design sas data-analysis

我正在使用SAS Programming 2教科书进行练习。

我正在尝试转换此数据:

Narrow Data set 对于这样的广泛数据集:

Wide Data Set 我也应该在我的数据步骤中有一个数组,只输出变量customer_id和month1到month12。

我的代码如下:

Data customer_orders(keep=Customer_ID month1-month12);
set orion.order_summary;
by customer_id;
array month{12}  month1-month12; 
do i= 1 to 12;
if order_month = i then     
month{i}= sale_amt;
end;

run;

proc print data=customer_orders;
run;

我运行此代码时遇到的问题是观察结果在一次观察中没有显示customer_id的所有sale_amt值,而是跳到下一行显示观察中找到的第二个值。

非常感谢任何帮助。

注意:我不允许发布另一个指向输出结果的链接。

1 个答案:

答案 0 :(得分:1)

如评论所述,您需要设置一个retain语句,以便将值传递到下一行,因为SAS会在处理步骤中将值重置为缺失值。 Last.cust_id只接受每个客户ID的最后一行,此行应包含该客户的所有观察结果。

然后,除非另有说明,否则将保留所有值。因此,使用first.cust_id,您可以将每个新客户ID设置为缺少所有值。

{{1}}
相关问题