【问题标题】:Sort observations in a custom order按自定义顺序对观察进行排序
【发布时间】:2015-02-24 04:59:33
【问题描述】:

我有一个数据集,它是由 proc 单变量的几个结果之间的连接产生的。

在更多的连接之后,我有一个最终的数据集,其中包含一个名为“Measure”的变量,它具有某些度量的名称,例如“平均值”和“标准差”,以及其他变量,每个变量都有这些值度量,代表某一年的一个月。

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

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

【问题讨论】:

    标签: sas


    【解决方案1】:

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

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

    第三,如果您在 SQL 中进行连接,您可以将 input 的变量排序为您想要的顺序 - 如果您觉得最有用,我可以更详细地解释这一点。

    【讨论】:

    • 您提供的解决方案已经绰绰有余,非常感谢。但是,如果这不是问题,如果您可以扩展第三个解决方案,我会很高兴
    猜你喜欢
    • 2021-12-01
    • 1970-01-01
    • 2016-07-04
    • 1970-01-01
    • 1970-01-01
    • 2019-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多