全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
958 9
2022-01-26
请看我的EXCEl 附件,左表是原数据,想把日期列里的数值转为列名,另外三列member,cost,unit 转为行。 右表是转换后的样子。

用了SAS 里的transpose function, 可是转置后,日期列名并不是按顺序排列(07/2020-06/2021), 因为表中service code 这一列,并不是每个月都有数值,所以转置后,顺序就乱了。我需要日期列标头按顺序排列。

大神们有其它的方法转置吗?

data.xlsx
大小:(20.19 KB)

 马上下载



transpose.png





二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2022-1-26 10:39:56
附件

附件列表

transpose.xlsx

大小:20.14 KB

 马上下载

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2022-1-26 13:04:55
proc sql;
  select distinct date
        into :dlist separated by ' '
        from b_trans;
quit;

proc transpose data=b_trans out=a_trans1(drop=_label_ rename=(_name_=measure));
  by provider_id service_code;
        id date;
run;

data a_transx;
  if 0 then set b_trans(keep=provider_id service_code);
  length measure $8 &dlist 8;
  set a_trans1;  
        by provider_id service_code;
run;
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2022-1-27 09:22:14
运行有错误呀,最后那一段代码?
      
data a_transx;
  if 0 then set b_trans(keep=provider_id service_code);
  length measure $8 &dlist 8;
  set a_trans1;  
        by provider_id service_code;
run;
NOTE: Line generated by the macro variable "DLIST".
48          2019M07 2019M08 2019M09 2019M10 2019M11 2019M12 2020M01 2020M02 2020M03 2020M04 2020M05 2020M06 2020M07 2020M08 2020M09
            ____
            22
48       ! 2020M10 2020M11 2020M12 2021M01 2021M02 2021M03 2021M04 2021M05 2021M06 2021M07 2021M08 2021M09 2021M10 2021M11 2021M12
ERROR 22-322: Syntax error, expecting one of the following: a name, _ALL_, _CHARACTER_, _CHAR_, _NUMERIC_.  

352: LINE and COLUMN cannot be determined.
NOTE: NOSPOOL is on. Rerunning with OPTION SPOOL might allow recovery of the LINE and COLUMN where the error has occurred.
ERROR 352-185: The length of numeric variables is 3-8.
352: LINE and COLUMN cannot be determined.
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2022-1-27 13:25:35
转置前 format date MONYY7.;
再试试呢
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2022-1-28 04:02:09
format date MONYY7后,列的排序就不是按顺序来了。应该是 7/2020-6/2021. 可出来的结果 是 APR- 21 排在第一位了
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群