【发布时间】:2015-12-10 21:24:34
【问题描述】:
我正在处理的数据目前采用以下形式:
ID Sex Race Drug Dose FillDate
1 M White ziprosidone 100mg 10/01/98
1 M White ziprosidone 100mg 10/15/98
1 M White ziprosidone 100mg 10/29/98
1 M White ambien 20mg 01/07/99
1 M White ambien 20mg 01/14/99
2 F Asian telaprevir 500mg 03/08/92
2 F Asian telaprevir 500mg 03/20/92
2 F Asian telaprevir 500mg 04/01/92
我想编写 SQL 代码来获取以下形式的数据:
ID Sex Race Drug1 DrugDose1 FillDate1_1 FillDate1_2 FillDate1_3 Drug2 DrugDose2 FillDate2_1 FillDate2_2 FillDate2_3
1 M White ziprosidone 100mg 10/01/98 10/15/98 10/29/98 ambien 20mg 01/07/99 01/14/99 null
2 F Asian telaprevir 500mg 03/08/92 03/20/92 04/01/92 null null null null null
每个唯一 ID 只需要一行,所有唯一药物/剂量/填充信息在列中,而不是行中。我想它可以使用 PROC TRANSPOSE 来完成,但我不确定进行多个转置的最有效方法。我应该注意,我有超过 50,000 个唯一 ID,每个 ID 都有不同数量的药物、剂量和相应的填充日期。我想为那些没有数据要填写的列返回空值/空值。提前致谢。
【问题讨论】:
-
我建议阅读这篇论文:sascommunity.org/wiki/…
-
嗯,这肯定是个骗子,不过很难找到一个好的重复问题候选者。
-
@RobertPenridge 我发现 similar 帖子,但没有一个解决需要转置变量(药物、剂量、填充日期)且不需要转置的问题(性别、种族)在同一个集合中。似乎必须有一种比零碎转置然后一遍又一遍合并更有效的方法..
-
@RobertPenridge - 正式提出重复。该问题的一些答案可以概括为转置多个变量而无需太多工作。
标签: merge sas rows collapse transpose