[R] 將多個 col 轉成一個 col 以利處理資料(melt 與 dcast)

有時候在資料篩選處理或繪圖上,
需要將多個col轉換成一個col。
類似以下這張圖。

例如當要篩選出多個col的值>0的資料,
轉換成右方格式即能很快的處理。
這部分真的還是要自己去實作比較能感受到實際狀況。
下面為範例,
melt 為左圖格式轉到右圖格式,
dcast 則是右圖格式轉為左圖格式。

library(reshape2)
head(airquality)
## 保留 Month 跟 Day,其他col轉為 variable 與 value 兩個col,variable 為"原本沒保留"(Month跟Day之外)的col名稱,value 則是其對應值。
## 簡單講是將所有其他未指定的col轉為剩下兩個col,分別為原本名稱以及其對應的值
melt.df <- melt(airquality, id=c("Month", "Day"))
head(melt(airquality, id=c("Month", "Day")))
names(melt.df)
##將轉換過的 melt.df 轉成原本的 airquality
dcast.df <- dcast(melt.df, Month + Day ~ variable, value.var="value")
dcast.df <- dcast.df[,c("Ozone", "Solar.R", "Wind", "Temp", "Month", "Day")]
view raw melt_dcast hosted with ❤ by GitHub

Related Posts:

2 則留言:

  1. 您的這篇文章 相當好用 且 容易理解

    回覆刪除
  2. 謝謝分享.....想請問這跟spread gather是否幾乎一樣

    回覆刪除