如果可能的话,我对SAS很新,需要一些帮助。
我的数据看起来像这样
目前,我只有201801,但我希望跟随代码能够在2018年的所有月份运行,或者更确切地说每年都会强制显示
PROC TRANSPOSE DATA = have OUT = want PREFIX = primary_;
BY member_no;
ID yearmonth_pd;
VAR desc;
OPTIONS MISSING = ' ';
RUN;
这样做的目的是,稍后我想将每年一半的连接添加到其他信息,但这会返回错误
ERROR: Column primary_201802 could not be found in the table/view identified with the
correlation name B.
我们手动输入变量b.primary_201801,b.primary_201802,....
但希望这可以在不需要的情况下完成,因为其他部门使用代码,但不一定知道如何编码。
基本上,我想要以下内容(顶部的表格是我正在寻找的,下面的表格通常是数据)
全部谢谢!
答案 0 :(得分:1)
您没有指出yearmonth_pd
是字符串,格式化日期值,还是仅为年份和月份的编码表示yyyymm
的整数。我会假设简单的整数。
您需要将一组额外行添加到have
,以便每个目标列有一行。
data all_months;
member_no = 0;
do yearmo_pd = 201801 to 201812;
output;
end;
run;
data haveFull;
set all_months have;
run;
PROC TRANSPOSE DATA = have OUT = want(where=(member_no ne 0)) PREFIX = primary_;
BY member_no;
ID yearmonth_pd;
VAR desc;
OPTIONS MISSING = ' ';
RUN;
当out=
具有稀疏或无序data=
值时,此方法还可用于强制id
表中的某个列顺序。