當我們對單一資料蒐集對象測量多個變數值時,寬資料是指同一對象的所有測量值都排在同一列;長資料則是各個測量值單獨成一列,並標明其是哪個變數的測量值。某些統計分析須使用寬資料,例如相關分析;也有些分析偏好長資料,例如變異數分析。
首先,我們以data.frame 函數建一個五個蒐集對象、三個變數的寬資料:
> mydata <- data.frame(var1 = c(12, 15, 19, 22, 15), var2 = c(18, 12, 42, 29, 44), var3 = c(8, 17, 22, 19, 31))
> mydata
運用stack 函數可將資料轉成長資料,
> sdata <- stack(mydata)
> sdata
stack 函數還可使用select 參數選擇要轉換成長資料的變數,此處我們選var1 和var2。
> sdata <- stack(mydata, select = c(var1, var2)
讀者可利用下列指令檢查長資料十筆數據中均無var3!
> sdata$ind == "var3"
反過來說,unstack 函數可將長資料轉換為寬資料,要注意的是必須使用R 中的公式符號(formula notation) 'values ~ ind',此處解讀為依不同的ind 值將values 歸類。最後,對於更複雜的長寬資料格式轉換,讀者可運用R 中的reshape 套件,這個部分容後再敘。
> mydata <- unstack(sdata, values ~ ind)
> head(mydata)
參考資料:Spector, P. (2008), Data Manipulation with R, Springer.
撰文者: |
留言列表