??本文介紹基于Excel軟件的Power Query模塊,實現表格數據由寬數據轉為長數據的具體方法。
??長數據和寬數據是數據分析中的2
種基本數據組織形式,二者在結構、用途、適用場景等方面各有特點。其中,寬數據 (Wide Format)以“橫向擴展”為特征,每個獨立個體(如一名患者、一家公司)獨占一行,而該個體的多個觀測值(如不同時間點的指標)則橫向排列在不同列中。這種布局讓數據一目了然,適合直接查看或制作報表,但涉及時間序列或多指標對比時,會顯得冗余且不利于程序化分析。長數據 (Long Format)則采用“縱向堆疊”的結構,每一行僅記錄一個觀測值,通過新增分類列(如“時間點”“指標類型”)來區分不同條件下的數據。這種格式雖然增加行數、降低可讀性,卻更貼合統計建模和可視化工具的需求,尤其適合重復測量分析或繪制多變量趨勢圖。
??在我們之前的文章R語言讀取Excel表格數據并繪制多系列柱狀圖、條形圖(https://fkxxgis.blog.csdn.net/article/details/128986301)中,就介紹過基于R語言實現寬數據與長數據的轉換方法;而本文我們則介紹不用代碼、直接在Excel內,實現寬數據與長數據的轉換方式。
??首先,已知我們有一個如下圖所示的Excel表格,其目前的數據形式為寬數據;我們的需求就是將這一寬數據轉為長數據。
??轉換的方式也很簡單。首先,我們需要新建另一個Excel表格文件,并在“數據”一欄中,依次選擇“獲取數據”→“來自文件”→“從工作簿”,如下圖所示。
??隨后,在彈出的窗口中,選擇存放了前述寬數據的那個Excel表格文件,如下圖所示。
??接下來,在導航器中,首先選擇寬數據所在的Sheet,此時在右側就會出現數據的預覽;接下來,點擊右下角的“轉換數據”按鈕,如下圖所示。
??隨后,即可出現如下圖所示的Power Query編輯器界面。由于前述數據導入過程中,可能會存在問題,因此此時我們首先對數據做一下檢查。比如有一種情況,就是在數據導入時,Excel可能會將原本寬數據的第一行(列名行)也當作導入數據的一行記錄(相當于導入后的數據比之前多了1
行而少了列名);因為我這里沒有遇到這個情況,所以這里就沒記錄這個問題的解決方法,如果大家遇到了這個問題,再搜索解決方法即可。
??但是本文中,遇到了另一種問題:原本我的寬數據的第3
列是一個文本格式的列,其具有形如0010
的編號;而在上述導入過程中,這一列被Excel識別為了整數格式的列,也就導致將原本的0010
變為了10
,很顯然這個是不正確的。
??針對這種情況,我們就選中這一列,此時可以看到此列的數據格式確實被識別為了整數,如下圖所示。
??因此,將這一列修改為文本格式即可,如下圖所示。
??接下來,會彈出如下圖所示的提示窗口,選擇“替換當前轉換”即可。
??修改格式后,可以看到這一列的數據已經是正常的了,例如0010
這個值顯示就是正確的了,如下圖所示。
??接下來,我們回歸主題,開始進行寬數據向長數據的轉換。轉換的方式也很多,首先如果大家需要參與轉換的列比較多,那就可以首先選中不需要轉換的列,然后選擇“轉換”欄目中的“逆透視其他列”,如下圖所示。
??這樣,就會將我們沒有選中的其他列加以轉換,如下圖所示。可以看到,此時前三列(也就是公司、產品、產品編號等基本信息列)沒有參與轉換,而轉換的是后面幾列,也就是不同年份的銷量。
??同樣的,我們還可以直接選中需要轉換的列,那么此時選擇“逆透視列”即可,如下圖所示。
??可以看到,上圖中我們只選中了2021年銷售額
這一列,因此逆透視后,只有這一年的銷售量被轉換了,如下圖所示。
??此外,在Power Query編輯器右側,有一個應用的步驟模塊,如下圖所示。這里會記錄數據導入過程、編輯過程中的操作,如果需要撤回操作,直接點擊這里最新操作左側的叉號即可。
??如果數據已經處理完畢, 那么選擇“文件”中的“關閉并上載”選項即可,如下圖所示。
??隨后,即可看到導入、轉換完畢的數據,已經出現在了當前的Excel表格文件中,如下圖所示。
??此外,對于基于Power Query編輯器導入數據的Excel表格,其右側會出現如下圖所示的“查詢 & 連接”窗口,其中會記錄數據導入情況。如果在上述操作中有數據導入錯誤,這里也會顯示出來,所以大家也可以多多留意這個位置的信息,避免數據導入或轉換錯誤。
??至此,大功告成。
歡迎關注:瘋狂學習GIS