Tidyverse|tidyr數據重塑之gather,spread(長數據寬數據轉化)

2021-03-02 生信補給站

長型數據和寬型數據在數據分析中非常常見 ,其中寬型數據更具可讀性,長型數據則更適合做分析。

R-tidyr主要有以下幾大功能:

gather—寬數據轉為長數據;

spread—長數據轉為寬數據;

unit—多列合併為一列;

separate—將一列分離為多列

unit和separate可參考Tidyverse|數據列的分分合合,一分多,多合一,本文主要介紹利用tidyr包實現長寬數據的轉化。


library(tidyverse)
#library(tidyr)
#使用mtcars內置數據集
data(mtcars)
head(mtcars)


使用gather函數:gather(data, key, value, … , na.rm = FALSE, convert = FALSE)

其中 data:為待轉換的寬數據

key:將原數據框中的所有列賦給一個新變量key

value:將原數據框中的所有值賦給一個新變量value

...:可以指定哪些列聚到一列中 (同reshape2區別

na.rm:是否刪除缺失值

1 轉換全部列
#寬轉長
mtcars_long <- mtcars %>%
 rownames_to_column("car_ID") %>%
 gather(key = "variables", value = "values")
head(mtcars_long)


2 部分列保持不變

區別於reshape2,...只將指定變量從寬數據變成長數據

1) 不gather car_ID列 (行名轉化而來)

mtcars_long2 <- mtcars %>%
rownames_to_column("car_ID") %>%
gather(key = "variables", value = "values",  - car_ID)
head(mtcars_long2)

2)gather 在   mpg:am之間的所有列

mtcars_long3 <- mtcars %>%
rownames_to_column("car_ID") %>%
gather(key = "variables", value = "values",  mpg:am)
head(mtcars_long3)


使用spread函數:spread(data, key, value, fill = NA, convert = FALSE, drop = TRUE)

data:待轉換的長數據

key:需要將變量值拓展為欄位的變量

value:需要分散的值

fill:對於缺失值,可將fill的值賦值給被轉型後的缺失值


mtcars_wide <- mtcars_long2 %>% 
spread(variables, values)
head(mtcars_wide)

這實際將原來gather後的結果還原為gather前, 結果與mtcars一樣,只是各列的相互位置稍有調整。


參考資料:

Working_in_the_Tidyverse


【覺得不錯,右下角點個「在看」,期待您的轉發,謝謝!】

相關焦點

  • 從Tidyverse學起!
    tidyverse 是什麼tidyverse出自於R大神Hadley Wickham之手,他是Rstudio首席科學家,也是ggplot2的作者。tidyverse就是他將自己所寫的包整理成了一整套數據處理的方法,包括ggplot2,dplyr,tidyr,readr,purrr,tibble,stringr, forcats。
  • R語言 | Tidyverse包入門介紹
    你可以直接調用tidyverse,也可以調用它所轄屬的包。下面,我們講解一些tidyverse中可能使用到的函數,幫助你快速上手這個方便的東西。同時,我們會比較tidyverse和base R之間的不同之處,幫助你更快理解,為什麼tidyverse受到更多的推崇。
  • 【tidyverse】R中的tidyverse入門
    tidyverse是由RStudio首席科學家Hadley Wickham開發的R套裝的集合。這是關於清理數據的三部分系列中的第一部分,使用tidyverse在R中對其進行可視化。加載包首先,安裝tidyverse,然後加載tidyverse和magrittr。
  • R語言 | 數據操作tidyr包
    類似於上圖成行成列的表數據是乾淨數據(tidy data),一般每一行表示一條觀測記錄,每一列表示一個欄位(變量)tidyr包是用來操作tidydata的包,主要的功能有處理缺失值數據(Handle Missing Values)數據變形(Reshape Data)數據變形(Reshape Data)可以重構數據形狀,主要有gather()和spread()兩個函數gather()tidyr:
  • [R數據科學]tidyverse數據清洗案例詳解
    本文將為您提供整理數據的實用介紹以及tidyr包中附帶的工具。如果你想了解更多的基本理論,你可能會喜歡發表在《統計軟體雜誌》上的tidy data論文[1]。本文框架數據清洗案例我們主要通過一個案例,來了解如何整潔數據,並將案例中的各個有用函數進行詳細解讀。
  • 【數據管理】Tidyverse:R 語言學習之旅的新起點
    2 您用tidyverse包嗎?學習R語言的傳統路徑(base R first)多是從變量類型、數據結構、流程控制、循環與自定義函數,也就是以R程式設計作為起點,接著依照數據處理、視覺化、統計與機器學習等應用偏好延續下一個學習的旅程;由tidyverse
  • 數據清理工具簡介(Tidyverse)
    很多時候數據處理不僅僅是效率的問題,有時候甚至沒辦法進行數據分析的操作。為了加快數據清理的效率,同時為以後的建模和數據可視化做準備,R語言的Tidyverse包可以提供非常優秀的數據清理、整合和可視化的「一站式服務」。
  • dplyr和tidyr簡介|數據處理
    數據處理兩大利器:dplyr和tidyr1 dplyr 簡介dplyr是Hadley Wickham
  • 【數據整理】R用tidyr包進行數據操作
    在這篇文章中,我會向你們展示如何用tidyr包進行數據操作。Tidyr包是由Hadely Wickham先生創建的,這個包提高了整理原始數據的效率,而且通常在連接詞之間使用。我們常說當把每個列都看作是一個變量,而每行都當作是它的函數的時候,這時我們就說這些數據需要進行整理。
  • 30 天學會R DAY 15:tidyr包,數據整理另外一個利器
    本文將演示tidyr包中下述四個函數的用法:1. gather—寬數據轉為長數據。2. spread—長數據轉為寬數據。寬數據轉為長數據gather()函數首先我們通過一個數據集來解釋什麼是寬數據。醫學研究寬數據和長數據都很常見,最常見的是醫學隨訪的數據,往往在隨訪期內,多次策略。比如,測量鄭、陳、毛三人某種治療藥物之後,治療前、治療後1周、治療後2周,治療後3周的收縮壓值。可以得到兩種結構的資料庫。
  • R語言入門教程 | tidyverse包之數據處理
    包,《R語言實戰》並未涉及,這也導致R語言的學習難度增加,今天我們給大家引入tidyverse包的學習。tidyverse 包是 Hadley Wickham 及團隊的集大成之作,是專為數據科學而開發的一系列包的合集, 基於整潔數據,提供了一致的底層設計、語法、數據結構,包括數據導入,數據規整,數據處理,可視化,建模以及形成可重複性報告數據分析的全流程。
  • 【R學習筆記】- 數據整形 - dplyr and tidyr
    dplyr包裡的group_by()和summarise(),這兩個函數我用過,tidyr包沒接觸過,但接觸過類似裡面的gather()、spread
  • R語言學習指南(3) tidyverse的基礎使用
    tidyverse是為數據科學設計的R軟體包,它包含(ggplot2、dplyr、tidyr、stringr、magrittr、tibble)等一系列熱門軟體包,學好tidyverse的使用可也讓你站上另一個高度,從而高效的處理數據,因此本文檔不僅僅做一些案例介紹,而是希望以較為正確的學習方法來介紹R語言,使大家少走彎路,快速入門掌握R語言
  • R語言 | 數據操作dplyr包
    類型的數據做很方便的數據處理和分析操作。最初我也很奇怪dplyr這個奇怪的名字,我查到其中一種解釋library(tidyverse)## ── Attaching packages ────────────────────────────────────── tidyverse 1.3.0 ──
  • R數據科學--初見
    終於你跨越茫茫宇宙,來到生信星球,發現了初學者的新大陸前些天豆豆花花各入手一本學R必備的神書《R數據科學》,花花完結了零基礎入門R語言系列和ggplot系列。現在開始跟著這本書的思路走,仔細端詳R語言。如果你還不了解這本書,👇看這裡。
  • tidyverse —— readxl包
    readxl包,讀取Excel文件專用包,有和tidyverse核心包一樣的特點,快!效率特高!話說Hadley大叔出品就沒有效率低的,可能鍵盤是借來的,著急還。獨立性高,不外部依賴Java啥的,xls和xlsx文件讀取都可以。
  • R語言的數據管理
    整合和重構整合和重構可能是一類比較高級的數據管理了。整合:將多組觀測替換為根據這些觀測計算的描述性統計量重塑:修改數據的結構(行和列)來決定數據的組織形式。下面用mtcars來就具體說明。熱身:轉置轉置可能是重塑數據集中最簡單的啦,在Excel裡面,你可以需要先選擇一部分區域,然後複製的時候選擇轉置,R裡面通過t()來實現cars <- mtcars[1:5,1:4]t(cars)整合數據在R中可以使用一個或多個by變量和一個預先定義好的函數來摺疊(collapse)數據。
  • R 語言和 Stata 中的數據轉換(透視/長寬數據轉換)
    歡迎各位培訓班的小夥伴收看明晚八點的直播課(專題課程):「R 語言和 Stata 中的數據轉換(透視/長寬數據轉換)」
  • R語言必知必會之tidyverse(一):管道操作
    徵得張敬信老師同意,本號將轉載張老師關於R語言tidyverse包一系列文章,為大家進行醫學研究提供助力。
  • tidyverse —— readr包
    tidyverse默認用utf-8進行編碼。對於要進行解析的字符串,要先弄清楚原碼。l1 <- read.csv('F:/action/tidyverse/data/CSR_Finidx.csv', sep = ",", fileEncoding = "UTF-16")view(l1)