按自定义顺序对观察进行排序

时间:2015-02-23 19:24:34

标签: sas

我有一个数据集,它来自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

我希望我足够清楚。 提前致谢

1 个答案:

答案 0 :(得分:1)

一些直截了当的解决方案。首先,您可以简单地添加一个排序的变量然后删除。不需要转置,只需在数据步骤或连接后的PROC SQL中进行转置。 if measures='Mean' then sortorder=3; else if measures='MEdian' then sortorder=2;...然后按排序顺序排序,然后将其放入PROC SORT步骤。

其次,如果您使用完全数字值,则可以使用PROC MEANS为您进行排序,使用定义订单的自定义格式(使用NOTSORTEDorder=data在类声明中)和PROC MEANS中的idgroup功能来进行排序并输出正确的值。在大多数情况下这是过度杀伤,但如果数据集巨大则可能是合适的。

第三,如果你在SQL中进行连接,你可以按照input的变量对你想要的顺序进行排序 - 如果你发现最有用的话,我可以更详细地解释一下。 / p>