2015-02-23 142 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

相關問題