排序目的是將原本沒有依次序排列的資料,依照特定的順序進行排列。
一般在做資料清理時會將散亂的資料進行排序,如果大家有使用excel的經驗,應該都有使用過排序的功能,例如研究上探討患者做完治療後生活品質的變化,在患者做完治療的當下以及每次回診時固定請患者自填生活品質測量問卷,然而每個患者收案或是回診的時間都不一樣,所以資料建檔時可能會長這樣:
編號為每個患者的識別代號,填寫日期為問卷填寫的時間,由上圖可以看到,同一個患者不同填寫時間的資料是分散的,因此excel處理上會用排序將同一個患者的資料依照時間先後整理在一起(如下圖),但是在小型資料上excel還可以處理,但是當資料筆數太多時excel顯然就不是那麼適用了。
接下來,延續上次的主軸,分別以SAS及Python進行操作示範,關於軟體的基本概念可參閱上一篇內容。上一篇有提到命名規則,因此讀取資料前務必確認符合規則,以這例子來說必須先做名稱轉換,為了同時適用SAS與Python的操作,重新簡單命名如下:
以SAS進行資料排序
proc sort data= test; by id Q_date; run; /*依照ID
跟填寫日期做排序*/
一般SAS排序的default設定為ascending(升冪)排序,但如果要更改排序方式為降冪,則需要要改變排序的變數前面下descending指令。
proc sort data= test; by id descending Q_date;
run; /*改變變數Q_date的排序方式為降冪*/
讀者可以透過範例圖的呈現看出排序差異。
以Python進行資料排序
test.sort_values(["ID","Q_date"],ascending=False, inplace=True) # inplace=True表是取代目前的資料
留言
張貼留言