數(shù)據(jù)清洗之“堆疊”—多列數(shù)據(jù)合并處理的神器

在數(shù)據(jù)分析過程中,有時候我們經(jīng)常需要將多列指標(biāo)合并為一列,比如將一個100人5個觀察時間點生成的100行5列數(shù)據(jù)表,轉(zhuǎn)換成500行1列的數(shù)據(jù)表,從而滿足作圖、分析的進一步需求。那么,在JMP中如何快速實現(xiàn)呢?今天這篇文章我們將介紹數(shù)據(jù)轉(zhuǎn)換的神器之——“堆疊”,幫助你快速搞定數(shù)據(jù)的轉(zhuǎn)換。

為了幫助更多的臨床醫(yī)師學(xué)習(xí)如何運用JMP高效地開展數(shù)據(jù)分析,提高日常工作和發(fā)表論文的效率,2020年8月起,JMP資深用戶、JMP特約專欄作者、資深統(tǒng)計學(xué)家馮國雙博士及其團隊將在JMP數(shù)據(jù)分析平臺為大家分享一系列統(tǒng)計及數(shù)據(jù)分析、JMP實戰(zhàn)操作、JMP分析報表解讀等干貨內(nèi)容,每期一個經(jīng)典話題,幫助大家掌握一個新技能。值得注意的是,這些話題并非僅針對臨床醫(yī)師,對所有運用JMP軟件開展數(shù)據(jù)分析的小伙伴都適用。本文為此系列文章的第五期。
在數(shù)據(jù)分析時中,我們經(jīng)常會遇到這種情形:一個人同時有多個主要分析指標(biāo)(如隨訪數(shù)據(jù)中的多個時間點數(shù)據(jù)),在數(shù)據(jù)錄入時,通常是將其分別錄入在不同列(如5個時間點數(shù)據(jù),分5列錄入)。這種錄入雖然看起來直觀,但在數(shù)據(jù)分析時,有時卻需要將這幾列指標(biāo)放置在1列中(如將5列指標(biāo)放在1列中,同時新產(chǎn)生1列標(biāo)識5個時間點)。
很多人在這時就有點犯愁,如果是5列還好,逐個復(fù)制也花費不了多少時間。但如果是20列甚至更多的列呢?且不說費時費力,逐個復(fù)制粘貼也容易發(fā)生錯誤。今天我們請出來的“堆疊”,就是專為這種需求而存在的。它可以實現(xiàn)快速將多列合并為1列,同時新增一個標(biāo)識變量,以顯示不同指標(biāo)。
下面我們就用JMP自帶的示例數(shù)據(jù)來演示一下如何實現(xiàn)數(shù)據(jù)的堆疊。
JMP軟件內(nèi)置了很多示例數(shù)據(jù),可在最上方的菜單欄幫助→樣本數(shù)據(jù)庫中看到(圖1),此外,打開幫助→JMP文檔庫,你就可以看到目前最全最詳細、長達六千余頁的JMP幫助手冊,樣本數(shù)據(jù)庫均為里面的教學(xué)演示服務(wù)。

這次我們作為講解示例的是樣本數(shù)據(jù)庫中的Blood Pressure.jmp數(shù)據(jù)文件。數(shù)據(jù)的整體情況如圖2所示。

20個被測者分為四組,變量BP 8M的含義是周一的八點血壓測量值。所以該數(shù)據(jù)記錄的是每個被測者分別于周一、周三和周五每日三個不同時間點的血壓測量值。沒錯,這是標(biāo)準(zhǔn)的重復(fù)測量數(shù)據(jù),臨床上有很多醫(yī)生收集的數(shù)據(jù)都是這樣的格式。
01?多列指標(biāo)堆疊為一列指標(biāo)
首先,想象一下這樣的情境,得到數(shù)據(jù)之后,你想比較一下四組被測者的血壓測量值是否有差異,這時,血壓測量值變成了因變量y,測量時間點和分組變成了自變量x1和x2,目前的數(shù)據(jù)格式,顯然不符合我們接下來分析的要求。
我們需要將9個時間點的列進行堆疊,形成兩列,一列時間點,另一列測量值,且一一對應(yīng)。在JMP里該怎樣操作呢?只需一步!
堆疊的操作在菜單欄表→堆疊,點開后可見圖3所示對話框。

紅色方框中顯示我們要堆疊的列,這個示例數(shù)據(jù)中,我們需要將BP 8M至BP 6F九個變量均拖入到該框中;
藍色方框中填入新生成數(shù)據(jù)表的名稱;
綠色橢圓框中是新建列名稱。由于我們堆疊完成后會形成兩個新變量,一個是時間點(源標(biāo)簽列),一個是血壓測量值(堆疊數(shù)據(jù)列),我們可以分別為其設(shè)定變量名,如果不做修改,則新變量會采用系統(tǒng)默認的【數(shù)據(jù)】和【標(biāo)簽】作為變量名;
因為我們要把所有的變量名堆疊為一列而非多列,所以左側(cè)橙色方框內(nèi)的多序列堆疊暫不勾選(后面會為大家介紹需要勾選這個選項的情況);
左側(cè)下方綠色方框內(nèi)是對未堆疊列的處理,這個示例數(shù)據(jù)中是被測者和劑量這兩個變量,我們選擇全部保留。
我們用動圖演示一下操作過程,見圖4。

新生成的數(shù)據(jù)表如圖5所示。

20個被測者每人測了9個時間點的血壓值,所以新生成的數(shù)據(jù)表有180行觀測,標(biāo)簽和數(shù)據(jù)分別為堆疊前的時間點和血壓值。這樣,我們就可以進行后續(xù)的分析了。
02??將多列指標(biāo)堆疊為多列指標(biāo)
從標(biāo)題來看,似乎在做無用功,別著急,前者的多列指標(biāo)與后者的多列指標(biāo)可不是一回事。
還是用上面提到的血壓數(shù)據(jù),出于不同的分析目的,我們可能想將每日的血壓值作各作為一列,這時就不能簡單將其堆疊為標(biāo)簽和數(shù)據(jù)兩列了,而是需要堆疊成三組標(biāo)簽加數(shù)據(jù)的列,每組代表一日的測量情況。
操作與之前相同,不同的是需要勾選左側(cè)的“多序列堆疊”(如圖6):

因為這里是連續(xù)的三列變量堆疊為一列,共堆疊成三列,所以我們將序列數(shù)寫為3,并勾選“連續(xù)”,點擊確定即可,我們用動圖演示一下操作過程,見圖7。

生成的數(shù)據(jù)表如圖8所示。每個被測者的每日數(shù)據(jù)為一列,我們可以單獨比較四組被測者某一日的血壓是否相等。

日常數(shù)據(jù)整理與匯總中,除了存在將多列堆疊為一列的情況,還有將一列拆分為多列的情況。我們將在之后的文章中為大家介紹“堆疊”的反向操作---拆分,即如何將一列指標(biāo)拆分為多列指標(biāo)。拆分究竟有何意義?又有哪些注意事項?敬請期待后續(xù)的系列!
如果你還未體驗過JMP,歡迎復(fù)制以下鏈接到瀏覽器下載JMP試用,跟著文章練起來吧!
試用鏈接:https://www.jmp.com/zh_cn/download-jmp-free-trial.html?utm_campaign=td7013Z000002sEGsQAM&utm_source=wechat&utm_medium=social

此系列的其他文章推薦