2015-02-23 98 views
0

我有一个数据集来自一个proc单变量的几个结果之间的连接。按自定义顺序对观察值进行排序

经过一些更多的连接后,我有一个最终数据集,其中包含一个名为“Measure”的变量,其中包含某些度量的名称,例如“mean”和“standard deviation”,以及其他变量,这些措施代表了某一年的一个月。

我想按特定顺序排序这些度量,现在我正在执行一个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

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

其次,如果你使用的全部数值,您可以使用PROC MEANS为你做了排序,与定义在PROC MEANS顺序(在类语句中使用NOTSORTEDorder=data)和idgroup功能的自定义格式做排序并输出正确的值。这在大多数情况下是矫枉过正的,但是如果数据集是巨大的它可能是适当的。第三,如果你在SQL中进行连接,你可以通过变量来命令你想要的命令 - 我可以更详细地解释如果你发现最有用的。

+0

您提供的解决方案已经绰绰有余了,非常感谢。但是,如果这不是问题,如果可以扩展第三种解决方案,我很乐意 – htcoelho 2015-02-23 21:04:28

相关问题