按自定义顺序对观察结果进行排序
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
为您进行排序,使用定义顺序的自定义格式(使用 NOTSORTED
和 order=data
在 class 语句上)和 PROC 中的 idgroup
功能意味着进行排序并输出正确的值。在大多数情况下,这有点矫枉过正,但如果数据集巨大,它可能是合适的。
第三,如果你在 SQL 中进行连接,你可以按你 input
的变量排序成你想要的顺序 - 如果你发现我可以更详细地解释那个最有用。
我有一个数据集,它来自 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
为您进行排序,使用定义顺序的自定义格式(使用 NOTSORTED
和 order=data
在 class 语句上)和 PROC 中的 idgroup
功能意味着进行排序并输出正确的值。在大多数情况下,这有点矫枉过正,但如果数据集巨大,它可能是合适的。
第三,如果你在 SQL 中进行连接,你可以按你 input
的变量排序成你想要的顺序 - 如果你发现我可以更详细地解释那个最有用。