熱線電話:13121318867

登錄
首頁精彩閱讀R實現類似EXCEL中數據的透視功能:數據的行列轉換
R實現類似EXCEL中數據的透視功能:數據的行列轉換
2018-06-28
收藏

R實現類似EXCEL中數據的透視功能:數據的行列轉換

先介紹下融合和重鑄能實現什么樣的功能:
例子:想把表1—->>轉換成為表2
表1:

表2:

R實現數據的透視功能,使用reshape2包中的melt()函數和dcast()函數。在《R語言實戰》這本書中有著詳細的介紹。我在這里引用了其中的一些內容。
首先是融合函數,融合顧名思義就是把原先的數據進行融化合并,具體melt()函數會融合成什么樣的形式呢?
Library(reshape2)
Md=melt(mydata,id=c(“ID”,”Time”)
其中的參數id是用來唯一的確定觀察值的,就行是sql中的主鍵一樣。
其余沒有納入id的特征/屬性都會被R默認為歸為variable這個新生成的特征/屬性中。最后一列就是對應的value。
這就是melt函數把原先的數據表融合后的形式。
把數據融合好之后,就可以進行數據的重鑄了。重鑄的函數式dcast()函數,d的含義在這里是dataframe的含義。
重鑄成什么樣式呢?
Newdata=dcast(md,formulate,fun.aggregate,fill=value)
其中formulate的形式如下:
Rowvar1+rowvr2+….=colvar1+colvar2+colvar3+…;公式的左邊變量從melt中劃出來用來作為重鑄表的行變量,右邊是確定重鑄表的列變量,未在公式中的變量是當做值變量了。
Fun.aggrate函數是可選的數據整合函數,作用在重鑄表的數值上面。
Fill=value ;其中fill參數是用來指定重鑄后的表中缺失值使用什么數值來代替。

上面的例子的直接使用重鑄就可以實現:
library(reshape2)
data <- read.csv(file = ” “,stringsAsFactors = F)
newdata <-dcast(data,用戶~手機品牌)

在這里介紹一下管道函數我感覺是非常好用的在R中。因為管道函數的出現使得R中避免生成過多的變量,節省內存不說還能使得代碼顯得很簡潔且容易理解。第二是能夠避免使用過多的括號,生成復雜的函數套函數的形式。
%>%

數據分析咨詢請掃描二維碼

若不方便掃碼,搜微信號:CDAshujufenxi

數據分析師資訊
更多

OK
客服在線
立即咨詢
日韩人妻系列无码专区视频,先锋高清无码,无码免费视欧非,国精产品一区一区三区无码
客服在線
立即咨詢