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

Sort observations in a custom order

我有一个数据集,它来自 proc 单变量的几个结果之间的连接。

再加入一些之后,我得到了一个最终数据集,其中包含一个名为 "Measure" 的变量,它具有某些度量的名称,例如 'mean' 和 'standard deviation',并且其他变量每个都有这些度量的值,代表特定年份的一个月。

我想按特定顺序对这些度量进行排序,现在,我正在做一个 proc 转置,做一个保留以稳定我想要的顺序,然后再做一个转置。问题是这是一个非常幼稚的解决方案,我觉得它花费的时间比应该花费的时间要长。

是否有simpler/more有效的方法来进行这种排序?

我想用随机值做的一个例子: 我有:

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

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

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

其次,如果您完全使用数值,则可以使用 PROC MEANS 为您进行排序,使用定义顺序的自定义格式(使用 NOTSORTEDorder=data 在 class 语句上)和 PROC 中的 idgroup 功能意味着进行排序并输出正确的值。在大多数情况下,这有点矫枉过正,但如果数据集巨大,它可能是合适的。

第三,如果你在 SQL 中进行连接,你可以按你 input 的变量排序成你想要的顺序 - 如果你发现我可以更详细地解释那个最有用。