R語言入門教程 | tidyverse包之數據處理

2021-03-02 愛編程的藥學生

大家在學習R語言的時候,大多參考《R語言實戰》這本書,但這本書年代過於久遠(中文第二版是2016年),主要著力點也是在R base上,R語言可視化的ggplot2包也只是簡要介紹,而對於tidyverse包,《R語言實戰》並未涉及,這也導致R語言的學習難度增加,今天我們給大家引入tidyverse包的學習。


tidyverse 包是 Hadley Wickham 及團隊的集大成之作,是專為數據科學而開發的一系列包的合集, 基於整潔數據,提供了一致的底層設計、語法、數據結構,包括數據導入,數據規整,數據處理,可視化,建模以及形成可重複性報告數據分析的全流程。


在Rstudio中加載tidyverse包,可以看到該包下有8個子包,著名的ggplot2包即是其中的一個子集,我們先著重講一下數據處理有關的包——dplyr包。


而這些函數都可以與group_by結合,分組對原數據框進行處理。


mutate()與基礎函數transform()相似,都可以添加新的一列,但是允許引用剛剛創建的列:
mydata <- tibble(x1=c(2,2,6,4),               x2=c(3,4,2,8))##傳統方法  mydata$sum <- mydata$x1+mydata$x2  mydata <-transform(mydata,sumx=x1+x2)  attach(mydata)  sum <- x1+x2  detach(mydata)##dplyr  mydata %>% mutate(sumx=x1+x2,                  meanx=sumx/4)##dplyr允許使用管道%>%操作,且meanx可以引用sumx


select()使我們能夠快速聚焦在有用的數據子集上:
df <- tibble(      name = c("Alice", "Alice", "Bob", "Bob", "Carol", "Carol"),      type = c("english", "math", "english", "math", "english", "math"),      score = c(95, 83, 89, 67, 90, 78))df %>% select(1,2) ##選取1,2列df %>% select(name,score)df %>% select(-3)##同樣也可以用start_with 或 end_with篩選出具有前綴或者後綴的列df %>% select(start_with("n"))

filter()是對數據行方向的選擇和篩選,選出符合我們條件的某些行:
df %>% filter( type== "english", score>85)df %>% filter( between(score, 80, 90))

summarize()主要用於統計,往往與其他函數配合使用,比如計算所有同學考試成績的均值:
df %>%   filter(type=="english")%>%  summarize(          mean_english==mean(score)          sd_english=sd(score)          )#



R base包中涉及到排序的包括 sort(),rank(),order(),而在dplyr包中與排序相關的是arrange()包,默認是從高到低進行排序,如果變換排序順序則可以使用-(變量)或者desc(變量)。
df %>% arrange(score)df %>% arrange(-score)df %>% arrange(desc(score))df %>% arrange(type, score) 

group_by可以對原數據框進行分組計算,例如對於我們本文中的數據框,我們如果對個人或者科目感興趣的話,可以使用group_by(name或者type),然後利用summarize函數就可以求出分類之後的各個統計值。
df %>%   group_by(name) %>%   summarise(     mean_score = mean(newscore),    sd_score = sd(newscore)  )

今天對於tidyverse包的介紹先到這裡,tidyverse包的語法相比R base包更為容易記,樣式較方便,在數據處理上快捷方便,仔細學習tidyverse包後相信大家會真正體會到R 語言是一門神奇且方便的語言。



我們建立了一個讀者交流群,添加小編微信,拉你入群:

相關焦點

  • R語言 | Tidyverse包入門介紹
    事到如今,依舊有「數據處理,Python和R到底學哪個」的爭辯。今天,我們講一個「讓R能夠和Python在數據處理方面一較高下」的擴展包:tidyverse包。本期將介紹以下函數運算:%>%, tibble, as_tibble, read_csv, read_delim, filter, select, mutate, group_by, summarise, gather, spread數據處理流程 (R for Data Science, pp. ix)迄今為止,我們的R語言入門級講解,都會對已有的數據進行預處理
  • 【tidyverse】R中的tidyverse入門
    這些包作為大數據分析管道的一部分可以很好地協同工作。要了解這些工具及其協同工作的更多信息,請閱讀R for data science。 對於R的新手,請查看我之前的Storybench教程:RStudio筆記本中的R入門。以下教程將介紹tidyverse中用於構建和分析數據集的一些基本功能。
  • R入門?從Tidyverse學起!
    這種入門的學習路徑屬於base R first,學習的流程基本是先了解變量的類型、數據的結構,再深入點就會學到循環與自定義函數。有些類似於先認識編程,再按照數據處理、可視化、統計分析等應用方向開始下一個學習的旅程。但是對於很多人來說,R僅僅是一個可視化工具,來做出漂亮的圖,或者是一個可以方便的做回歸分析,生存分析,顯著性檢驗的統計工具。
  • Tidy時代R語言學習的一些ABC
    新年的第一個計劃,寫一個關於R語言數據處理和操作的教程,突出tidyverse出現之後的新方法。下面這篇小文章,給出了一個tidy時代R語言的入門書單和一些網絡資源。不全面,更不權威,就作為這個新教程系列的參考資料吧。
  • 【數據管理】Tidyverse:R 語言學習之旅的新起點
    2 您用tidyverse包嗎?學習R語言的傳統路徑(base R first)多是從變量類型、數據結構、流程控制、循環與自定義函數,也就是以R程式設計作為起點,接著依照數據處理、視覺化、統計與機器學習等應用偏好延續下一個學習的旅程;由tidyverse
  • R語言學習指南(3) tidyverse的基礎使用
    tidyverse是為數據科學設計的R軟體包,它包含(ggplot2、dplyr、tidyr、stringr、magrittr、tibble)等一系列熱門軟體包,學好tidyverse的使用可也讓你站上另一個高度,從而高效的處理數據,因此本文檔不僅僅做一些案例介紹,而是希望以較為正確的學習方法來介紹R語言,使大家少走彎路,快速入門掌握R語言
  • tidyverse —— readr包
    相比於base包,其優勢在於速度快,能提速十餘倍;相比於data.table包,其速度稍有遜色,作者Hadley大叔表示,差個1.2到2倍速度的樣子,但是,在讀取過程中能對數據進行更加精細的解析。下面介紹其主要函數。主要參考R for Data Science一書,http://r4ds.had.co.nz/data-import.html#getting-started。
  • tidyverse —— readxl包
    readxl包,讀取Excel文件專用包,有和tidyverse核心包一樣的特點,快!效率特高!話說Hadley大叔出品就沒有效率低的,可能鍵盤是借來的,著急還。獨立性高,不外部依賴Java啥的,xls和xlsx文件讀取都可以。
  • R語言必知必會之tidyverse(一):管道操作
    徵得張敬信老師同意,本號將轉載張老師關於R語言tidyverse包一系列文章,為大家進行醫學研究提供助力。
  • 從另一個視角看 R 語言的方言 Tidyverse
    可教學性概覽•我最大的擔憂來自 R 語言教學。對於需要學習 R 語言的非程式設計師來說,Tidy 讓精通這門語言變得更困難。•Tidyverse 來自這樣一種渴求,即要有一組相互兼容、行為一致的函數或包。這種「純正」哲學對計算機科學家有著難以抗拒的吸引力。
  • R語言 | 數據操作dplyr包
    [更新~] Python網絡爬蟲與文本數據分析公眾號只帶著Python字眼,卻分享著R語言,不務正業,任性了~dplyr簡介dplyr是R語言的數據分析包,很像python中的pandas,能對dataframe
  • R數據科學--初見
    你想學點生信,搜了「初學者教程」,滿眼儘是高大上,沒有一句能看懂。   終於你跨越茫茫宇宙,來到生信星球,發現了初學者的新大陸前些天豆豆花花各入手一本學R必備的神書《R數據科學》,花花完結了零基礎入門R語言系列和ggplot系列。現在開始跟著這本書的思路走,仔細端詳R語言。如果你還不了解這本書,👇看這裡。
  • [R數據科學]tidyverse數據清洗案例詳解
    介紹本中你將學習在R中數據處理簡潔的方法,稱為tidy data。將數據轉換為這種格式需要一些前期工作,但這些工作從長遠來看是值得的。一旦你有了整潔的數據和一些包提供的整潔工具,您將花費很少時間將數據從一種表示轉換到另一種,從而可以將更多的時間花在分析問題上。
  • tidyverse —— forcats包
    博客:https://ask.hellobi.com/blog/esperanca forcats包用於處理因子,可以更高效地對因子進行修改。生成因子R語言的base包中函數如dataframe等默認因子在分類變量讀入時就會生成,而tidyverse包中的readr等包則會保留數據讀入時的原樣不做改變,要生成因子則可以使用parse_factor函數進行處理。parse_factor函數更審慎一些,會對不在給定的因子水平中的變量取值一個警告,而base包中的factor則會直接將該值記為NA,不給出報錯或警告。
  • 數據清理工具簡介(Tidyverse)
    很多時候數據處理不僅僅是效率的問題,有時候甚至沒辦法進行數據分析的操作。為了加快數據清理的效率,同時為以後的建模和數據可視化做準備,R語言的Tidyverse包可以提供非常優秀的數據清理、整合和可視化的「一站式服務」。
  • R語言如何檢測和處理數據缺失值?
    這篇文章,總結和分享R語言如何檢測數據中的缺失值,以及針對不同情形下處理缺失值的方法。R語言可以使用is.na()函數來判斷數據集的取值是否為缺失值,並且利用一些匯總函數可以概述數據整體的缺失率、每個樣本的缺失率和每個變量的缺失率。R語言也提供可視化工具來直觀展示變量的缺失分布情況。
  • R語言小白入門課| 一刻鐘教你學會正則表達式
    以簡單易懂的介紹,帶領大家快速入門數據處理,這裡是R數據清洗欄目。在前兩期的內容中(十分鐘輕鬆學會R數據清洗技巧,生信小白必須跨越的第一關;R語言小白入門課|一刻鐘帶你學會R數據轉化),我們基於tidyverse包的核心包dplyr包,分別介紹了filter(),arrange(),select(),mutate(),以及summarize()5大函數的功能與使用方法
  • R語言數據處理全流程教學
    R 語言作為一款功能強大的統計分析、繪圖和數據挖掘軟體,被社會科學領域的研究者們廣泛應用於數據處理和圖表製作等工作。由於 R 語言需要一定的編程基礎,其開源屬性又帶來了千千萬萬的功能包(package),使得 R 語言的初學者常常不知從何入手,不知道學習哪些代碼與功能包足夠滿足自己的統計需求。
  • 地理數據科學培訓班第一課之初識R語言
    歡迎收看明晚九點的直播講解:R 和 RStudio 的安裝及 R Profile 的配置 & 初識 R 語言數據爬取本次直播講解將使用 Windows 系統的電腦演示。下面我們繼續安裝一些 R 包,部分包如果安裝失敗可以直接跳過,以後需要的時候再安裝:# 安裝 devtoolsinstall.packages("devtools")# tidyverse 系列的 R 包install.packages("tidyverse", dependencies = TRUE
  • Tidyverse|tidyr數據重塑之gather,spread(長數據寬數據轉化)
    長型數據和寬型數據在數據分析中非常常見 ,其中寬型數據更具可讀性,長型數據則更適合做分析