我有一个数据集,它来自proc单变量的一些结果之间的连接。
经过一些更多的连接之后,我有一个带有变量的最终数据集,名为" Measure",它具有某些度量的名称,例如' mean'例如,标准差'以及其他变量,每个变量都包含这些度量的值,代表某一年的某个月。
我想按照特定的顺序对这些措施进行排序,现在,我正在进行一个proc转置,执行保留以稳定我想要的顺序,并进行另一个转置。问题是,这是一个非常天真的解决方案,我觉得它需要的时间比它应该花的时间长。
是否有更简单/更有效的方法进行此类排序?
我想做的一个例子,随机值: 我有什么:
Measures | 2013/01 | 2013/02 | 2013/03
Mean | 10 | 9 | 11
Std Devi.| 1 | 1 | 1
Median | 3 | 5 | 4
我想要的是什么:
Measures | 2013/01 | 2013/02 | 2013/03
Std Devi.| 1 | 1 | 1
Median | 3 | 5 | 4
Mean | 10 | 9 | 11
我希望我足够清楚。 提前致谢
答案 0 :(得分:1)
一些直截了当的解决方案。首先,您可以简单地添加一个排序的变量然后删除。不需要转置,只需在数据步骤或连接后的PROC SQL中进行转置。 if measures='Mean' then sortorder=3; else if measures='MEdian' then sortorder=2;...
然后按排序顺序排序,然后将其放入PROC SORT
步骤。
其次,如果您使用完全数字值,则可以使用PROC MEANS
为您进行排序,使用定义订单的自定义格式(使用NOTSORTED
和order=data
在类声明中)和PROC MEANS中的idgroup
功能来进行排序并输出正确的值。在大多数情况下这是过度杀伤,但如果数据集巨大则可能是合适的。
第三,如果你在SQL中进行连接,你可以按照input
的变量对你想要的顺序进行排序 - 如果你发现最有用的话,我可以更详细地解释一下。 / p>