【发布时间】:2019-09-19 10:59:19
【问题描述】:
我有 18 个单独的数据集,其中包含类似的信息:患者 ID、30 天当量的数量以及这些 30 天当量的总天供应量。我从包含这 3 个变量以及药物类别 (VA_CLASS) 和捕获它的季度(总共 6 个季度)的数据集中输出了这些数据。
以下是我从上面显示的数据集片段创建 18 个独立数据集的方法:
%macro rx(class,num);
proc sql;
create table dm_sum&clas._qtr&num as select PatID,
sum(equiv_30) as equiv_30_&class._&num
from dm_qtrs
where va_class = "HS&class" and dm_qtr = &qtr
group by 1;
quit;
%mend;
%rx(500,1);
%rx(500,2);
%rx(500,3);
%rx(500,4);
%rx(500,5);
%rx(500,6);
%rx(501,1);
等等……
然后我需要通过 PatID 将所有 18 个数据集重新合并在一起,我想做的是迭代地将创建的下一个数据集添加到前一个数据集,例如,将数据集 dm_sum_500_qtr3 添加到文件已经包含 dm_sum_500_qtr1 和 dm_sum_500_qtr1 的结果。
感谢您的关注,布赖恩
【问题讨论】:
-
返回并重做此操作,这样您的数据中就有四分之一,而不是 18 个数据集。然后使用 PROC TRANSPOSE 来翻转它而不是宏。它更快、更高效、更动态。
-
我正在考虑这个问题,但在 TRANSPOSE 中翻转后,我担心包含错误数据的季度,并且在我对程序的审查中,我意识到 ID 选项可以解决这个问题。谢谢。
-
ID 将为您提供干净的 ID,IDLABEL 将为您提供干净的标签以用于显示目的。