1. 程式人生 > >R語言資料集行列互換技巧

R語言資料集行列互換技巧

現在給大家介紹的資料處理技巧是長轉寬,也就相當於Excel中的轉置,不過用R語言實現的長轉寬還有資料合併的功能,自然比Excel強大多了。

這裡給大家介紹4個函式,其中melt()、dcast()來自reshape2包,gather()、spread()來自tidyr包

一、寬轉長——melt()、gather()

mydata<-data.frame(
  name=c("store1","store2","store3","store4"),
  address=c("普陀區","黃浦區","徐彙區","浦東新區"),
  sale2014=c(3000,2500,2100,1000),
  sale2015=c(3020,2800,3900,2000),
  sale2016=c(5150,3600,2700,2500),
  sale2017=c(4450,4100,4000,3200)
)
#寬轉長——melt
mydata1<-melt(
  mydata,
  id.vars=c("address","name"),#要保留的主欄位
  variable.name = "Year",#轉換後的分類欄位名稱(維度)
  value.name = "Sale" #轉換後的度量值名稱
)

輸出結果

> mydata1<-melt(
+   mydata,
+   id.vars=c("address","name"),#要保留的主欄位
+   variable.name = "Year",#轉換後的分類欄位名稱(維度)
+   value.name = "Sale" #轉換後的度量值名稱
+ )
> mydata1
    address   name     Year Sale
1    普陀區 store1 sale2014 3000
2    黃浦區 store2 sale2014 2500
3    徐彙區 store3 sale2014 2100
4  浦東新區 store4 sale2014 1000
5    普陀區 store1 sale2015 3020
6    黃浦區 store2 sale2015 2800
7    徐彙區 store3 sale2015 3900
8  浦東新區 store4 sale2015 2000
9    普陀區 store1 sale2016 5150
10   黃浦區 store2 sale2016 3600
11   徐彙區 store3 sale2016 2700
12 浦東新區 store4 sale2016 2500
13   普陀區 store1 sale2017 4450
14   黃浦區 store2 sale2017 4100
15   徐彙區 store3 sale2017 4000
16 浦東新區 store4 sale2017 3200

再來看看gather()函式怎麼用

> #寬轉長——gather
> mydata1<-tidyr::gather(
+   data=mydata,
+   key="Year",
+   value="sale",
+   sale2014:sale2017
+ )
> mydata1
     name  address     Year sale
1  store1   普陀區 sale2014 3000
2  store2   黃浦區 sale2014 2500
3  store3   徐彙區 sale2014 2100
4  store4 浦東新區 sale2014 1000
5  store1   普陀區 sale2015 3020
6  store2   黃浦區 sale2015 2800
7  store3   徐彙區 sale2015 3900
8  store4 浦東新區 sale2015 2000
9  store1   普陀區 sale2016 5150
10 store2   黃浦區 sale2016 3600
11 store3   徐彙區 sale2016 2700
12 store4 浦東新區 sale2016 2500
13 store1   普陀區 sale2017 4450
14 store2   黃浦區 sale2017 4100
15 store3   徐彙區 sale2017 4000
16 store4 浦東新區 sale2017 3200

和melt()函式不同,gather()函式需要指定關鍵欄位key,以及關鍵欄位對應的值value,但是gather()函式更加好理解。

二、長轉寬——dcast()和spread()

還是用上面的data1資料集,先來看看dcast()函式

#長轉寬——dcast
dcast(
  data=mydata1,
  name+address~Year
  #左側是要保留的欄位,右側是要分割的分類變數,列數等於表示式
  #右側分類變數的類別個數
)
> #長轉寬——dcast
> dcast(
+   data=mydata1,
+   name+address~Year
+   #左側是要保留的欄位,右側是要分割的分類變數,列數等於表示式
+   #右側分類變數的類別個數
+ )
Using sale as value column: use value.var to override.
    name  address sale2014 sale2015 sale2016 sale2017
1 store1   普陀區     3000     3020     5150     4450
2 store2   黃浦區     2500     2800     3600     4100
3 store3   徐彙區     2100     3900     2700     4000
4 store4 浦東新區     1000     2000     2500     3200
dcast()函式的使用規則需要琢磨下才能理解,大家好好看看註釋部分,再來看看spread()

#長轉寬——spread
tidyr::spread(
  data=mydata1,
  key=Year,
  value=sale
)
> #長轉寬——spread
> tidyr::spread(
+   data=mydata1,
+   key=Year,
+   value=sale
+ )
    name  address sale2014 sale2015 sale2016 sale2017
1 store1   普陀區     3000     3020     5150     4450
2 store2   黃浦區     2500     2800     3600     4100
3 store3   徐彙區     2100     3900     2700     4000
4 store4 浦東新區     1000     2000     2500     3200

直接呼叫tidyr::spread,需要指定關鍵欄位key和對應的值value。

但是從理解上來看,我個人更喜歡tidyr包的函式,使用很清晰,大家可以根據實際情況自行選擇,好啦,今天的分享結束,下次再見!

相關推薦

R語言資料行列互換技巧

現在給大家介紹的資料處理技巧是長轉寬,也就相當於Excel中的轉置,不過用R語言實現的長轉寬還有資料合併的功能,自然比Excel強大多了。這裡給大家介紹4個函式,其中melt()、dcast()來自reshape2包,gather()、spread()來自tidyr包一、寬轉

R語言 資料取子集

保留變數: >newdata<-leadership[,c(6:10)]                  &

R語言-資料框分組求平均值

【技術關鍵】 1、從excel把資料讀到資料框 2、演算法實現將資料框的一些資料合為新的資料並組成新的資料框 3、將處理結果,即新的資料框儲存到excel檔案(或.csv) 4、將繪圖結果輸出到PDF檔案儲存 最近在嘗試分析近日的環境溫溼度變化; 雖然裝置只運行了48小時左右;

R語言-資料結構

主站:https://lartpang.github.io/ 之前一陣子,在EDX上學習了R語言的一門基礎課程,這裡做個總結。這門課程主要側重於R的資料結構的介紹,當然也介紹了它的基本的繪圖手段。 工作空間相關 ls() ## character(0) rm

COCO資料格式互換

poly->compacted RLE:     seg=np.array([312.29, 562.89, 402.25, 511.49, 400.96, 425.38, 398.39, 372.69, 388.11, 332.85, 318.71, 325.14, 295

基於30多萬條招聘資訊的熱門城市、地域 、薪資、人才要求的R語言資料視覺化分析

又是一年畢業季,什麼工作好找、工資高、哪些地域有優勢等就是很多人關注的話題了。這裡用一份2017年初,含有32萬條資料(行)、19個詳細招聘資訊(列)的資料進行招聘資訊的知識發現、挖掘。 資料部分截圖如下: 需要完成的工作 1、資料預處理; 2、每個行業的招聘次數、平均工

分享《R語言資料分析與挖掘實戰(張良均等)》中文PDF+原始碼

下載:https://pan.baidu.com/s/1I7hm-LP5H3-57vsUjOxeNw 更多資料分享:https://pan.baidu.com/s/1g4hv05UZ_w92uh9NNNkCaA 《R語言資料分析與挖掘實戰(張良均等)》PDF+原始碼 PDF,339頁。 配套資料與原始

R 語言資料讀取與儲存

一、R語言讀取文字檔案: 1、檔案目錄操作:getwd() : 返回當前工作目錄setwd(“d:/data”) 更改工作目錄 2、常用的讀取指令readread.table() : 讀取文字檔案read.csv(): 讀取csv檔案如果出現缺失值,read.

R語言 資料結構

向量 向量是用於儲存數值型、字元型或邏輯型資料的一維陣列。單個向量中的資料必 須擁有相同的型別或模式(數值型、字元型或邏輯型)。同一向量中無法混雜不同模式的資料。 例如 a <- c(1,2,5,3,6,-2,4) 通過在方括號中給定元素所處位置的數值,我們可以訪

R語言資料離散化使funModeling變得容易

tl; dr:將數值變數轉換為分類,如下圖所示。 閱讀時間〜6分鐘 開始吧! 該軟體包funModeling(從版本> 1.6.6)引入了兩個 功能discretize_get_bins,它們discretize_df協同工作 以幫助我們完成離

R語言--資料

資料框 資料框是一種矩陣形式的資料,資料框各列中的資料可以是不同型別的資料。資料框每一列認為是一個變數,每一行是一個觀測;看以看做是矩陣的推廣。 資料框的生成函式:data.frame() 列入資料框列表的限制: 1:他的分量必須是向量 ---- 數值,字元,邏輯 ---

R語言資料框 因子 列表

資料框:data <- data.frame(col1,col2,)資料框patientID <- c(1,2,3,4)age <- c(25,34,28,52)diabetes <- c("Type1","Type2","Type3","Type2"

R語言資料處理 之 建立新變數

初步的資料處理,通常要建立新的變數。其實,建立新變數可以: 避開未經處理的資料未有所需資料的難處; 變換一些已有資料,以更好的為下一步分析作準備; 而常建立的新變數有:  缺失值指標 (Missingness indicators) :指出在哪些地方有資料缺失  分段

R語言資料框的常用操作

以下給出資料框常用的基本操作,儘量全面的給出一個完整的資料操作: 目錄 資料框概覽 更改增加資料框列名 資料框變數(variables)的篩選 索引篩選的幾種格式 條件篩選的方式 資料框觀測(observations

R語言資料探勘(2) 資料預處理

一 、資料清理 檢查資料質量的重要性 除了在建立模型之前需要完成資料清理,在對資料結構的探索和對模型的描述和預測過程中都需要不斷檢查資料質量 探索的過程中,出現任何異常情況都需要解釋和處理。 比如分類變數應該注意頻率特別低的類別,它可能是錯誤分類或者原本屬於相鄰類別的資料

R語言--資料介面(五)

1. CSV檔案 獲取和設定工作目錄 # 獲取和設定工作目錄 print(getwd()) # 設定當前工作目錄 setwd("E:/R") print(getwd()) 列印結果:

【轉載】R語言資料處理——資料合併與追加

資料結構的塑造是資料視覺化前重要的一環,雖說本公眾號重心在於資料視覺化,可是涉及到一些至關重要的資料整合技巧,還是有必要跟大家分享一下的。 在視覺化前的資料處理技巧中,匯入匯出、長寬轉換已經跟大家詳細的介紹過了。 今天跟**家分享資料集的合併與追加,並且這裡根據所依賴函式的處理效率,給

R語言資料結構2—matrix

矩陣 矩陣是一個二維陣列,只是每個元素都擁有相同的模式(數值型、字元型或邏輯型)。可通 過函式matrix建立矩陣。一般使用為: matrix(vector = , nrow = , ncol = , byrow = ,dimnames = list(,)) 其中vec

R語言資料集合並、資料增減、不等長合併

每每以為攀得眾山小,可、每每又切實來到起點,大牛們,緩緩腳步來俺筆記葩分享一下吧,please~———————————————————————————資料選取與簡單操作:which返回一個向量中指定元素

R語言資料的排序和合並--ordered();rbind()

R語言資料的排序和合並  leadership借用前一章的: > leadership managerID testDate country gender age item1 item2 item3 item4 item5 1 1 10/14