【发布时间】:2018-08-20 15:07:51
【问题描述】:
我有一个 SAS 数据集(change_detail),它维护着变化变量,看起来像这样(实际表中有超过 200 个变化变量除外):
Reference Chg1Code Chg1Desc Chg2Code Chg2Desc Chg3Code Chg3Desc
--------- -------- -------- -------- -------- -------- --------
1234 C Change2
1234 C Change1 C Change2
1234 C Change1 C Change3
2345 C Change1 C Change3
2345 C Change3
3456 C Change2 C Change3
3456 C Change1 C Change2
3456 C Change1
3456 C Change1 C Change3
我需要将这些信息提炼成每个参考编号发生变化的摘要。当我在 SAS 中使用以下 PROC SQL 时:
proc sql;
create table work.changedata_summary as
select distinct
a.Reference,
catx(',',a.Chg1Desc,a.Chg2Desc,a.Chg3Desc) as Changes length=1000
from
work.change_detail a
;
quit;
它连接各个更改描述变量,但保持每个参考编号的原始观察数。我得到的结果是:
Reference Changes
--------- -------
1234 Change2
1234 Change1,Change2
1234 Change1,Change3
2345 Change1,Change3
2345 Change3
3456 Change2,Change3
3456 Change1,Change2
3456 Change1
3456 Change1,Change3
我需要一些帮助来平展这些数据(使用 PROC SQL 或 DATA 步骤)以仅按不同的参考编号显示汇总结果。预期结果是:
Reference Changes
--------- -----------------------
1234 Change1,Change2,Change3
2345 Change1,Change3
3456 Change1,Change2,Change3
我们将不胜感激提供的任何帮助!谢谢!
【问题讨论】:
-
您只能进行 3 次更改,还是这只是您数据的一小部分?
-
这只是一个小样本。实际数据集包含超过 200 个不同变量的变化数据,因此我需要一个可扩展的解决方案。
-
为什么是 SQL?在数据步骤中会容易得多。