dataframe第二列 r语言_123.R简介和统计绘图
123R簡介和統計繪圖
本節作者:劉永鑫 中國科學院遺傳與發育生物學研究所;陳同 中國中醫科學院
版本1.0.2,更新日期:2020年8月31日
本項目永久地址:https://github.com/YongxinLiu/MicrobiomeStatPlot ,本節目錄 123R,包含R markdown(*.Rmd)、Word(*.docx)文檔、測試數據和結果圖表,歡迎廣大同行幫忙審核校對、并提修改意見。提交反饋的三種方式:1. 公眾號文章下方留言;2. 下載Word文檔使用審閱模式修改和批注后,發送至微信(meta-genomics)或郵件(metagenome@126.com);3. 在Github中的Rmd文檔直接修改并提交Issue。審稿人請在創作者登記表 https://www.kdocs.cn/l/c7CGfv9Xc 中記錄個人信息、時間和貢獻,以免專著發表時遺漏。
本文教程的源代碼見123R簡介和統計繪圖.Rmd,實戰代碼詳見R.Rmd。
為什么要學習R
圖. R常用圖形 https://www.r-graph-gallery.com/
為什么選擇R?
多領域的資源, CRAN收錄16170個R包 (20年9月1日),涵蓋了統計學、經濟學、生態學、進化生物學、生物信息學、物理、化學等多學科。
跨平臺, R可在多個主流操作系統下運行,包括Windows、MacOS和Linux。
命令行驅動 R即時解釋,輸入命令,即可獲得相應的結果,滿足在繪圖中及時修改的需要。
R語言優勢
統計分析能力突出,部分統計功能整合在R語言的底層,但大多數數據分析和可視化功能則以包(packages)的形式提供,資源極其豐富
R具有強大的數據可視化能力,高質量的圖像輸出工具以及多種現代繪圖系統:
如grid, lattice, ggplot2等
擴展和開發能力,在R中可使用簡潔的方式編寫新的統計方法,甚至整合進其他語言編寫的應用程序內。
也可以編制自己的函數,或制作獨立的統計分析包,快速實現新算法
靈活,作為一種平臺,方便與其他工具整合,實現數據分析流程化
自由、免費、源代碼開放,與多數商業統計軟件相比,R是完全免費的,它囊括了在其他軟件中尚不可用的且先進的統計計算例程(類似于函數,但含義更為豐富,如API接口),是一個可進行交互式數據分析和探索的高自由度平臺
R語言缺點
學習曲線陡峭:
因為其功能豐富,導致對應幫助文件較多,而由獨立貢獻者編寫的部分模塊則較零散難以完全掌握,初學者剛開始與代碼打交道,需要記住大量常用命令,無疑提高學習難度。
需要大量計算資源:
所有的待處理數據通常需要全部讀入內存后才能處理,因此不適合分析超大規模的數據。
運行速度稍慢:
即時編譯,效率約相當于C語言的1/20。
R排名
圖. R語言世界使用率2020年8月排名 https://www.tiobe.com/tiobe-index/
目前R語言是世界上最受歡迎的10大語言之一。而且近些年始終處于上升階段,截止2020年8月位于用戶使用率榜單的第8位,較去年同期使用人數近乎翻倍。特別是在生命科學領域,被認為是使用頻率最高的語言。其用戶主要集中于專業領域,目前在移動設備、網頁中使用率較低,但隨著云端計算平臺的發展,便攜式移動端也是R未來的發展方向。
R語言統計繪圖實戰
R軟件下載安裝
R語言 https://www.r-project.org
Rstudio編程集成開發環境(IDE,Integrated Development Environment) https://www.rstudio.com
RStudio是一款R語言的IDE,R自帶的環境操作較為復雜,而RStudio很好地解決了該問題,而且它還具有調試、可視化等功能,支持純R腳本、Rmarkdown (腳本文檔混排)、Shiny (交互式網絡應用)等。
具體安裝和配置步驟,詳見:
121個人電腦搭建微生物組分析平臺(Win/Mac)
圖. RStudio界面。主要分為4個區域。
左上-代碼編輯區:
編輯和修改代碼并可及時保存,也可以對單行或選擇區域運行特定代碼,減少代碼復制粘貼的操作。
右上-環境變量/歷史區:
環境(Environment)面板顯示當前加載的函數和變量的基本信息,如類型、維度等,還可以鼠標點擊查看詳細信息,點擊數據表會在代碼編輯區創建新面板預覽。
歷史面板則顯示之前運行過的所有代碼和操作。
左下-代碼執行區:
可以隨時在此處執行代碼,在代碼編輯區選擇并運行的代碼也會顯示在此處。
右下-文件/圖形預覽區:
文件(Files)面板是一個資源管理器,可以瀏覽文件并打開,在RStudio server版本中還有文件上傳和下載的功能。
繪圖(Plots)面板為圖形預覽區,可顯示繪圖代碼的結果,還提供了圖片放大,保存為指定尺寸和類型的功能。
包(Packages)面板顯示己安裝的包,并可手動勾選加載或卸載,也可以進行包的安裝和升級。
R語言包安裝
R包主要來源CRAN,Bioconductor和Github三個網站。
CRAN包安裝
CRAN是R官方包的發布網站,安裝方法如下:以繪圖包ggplot2為例。
install.packages("ggplot2")R包默認覆蓋安裝,反復運行上述代碼會多次下載該包并重新安裝,不僅非常浪費時間,而且有時還會破壞原有包導致無法正常使用。推薦大家安裝包時采用如下條件判斷方法安裝:即使用requireNamespace()函數判斷目標包是否存在,如不存在時才安裝。
if (!requireNamespace("ggplot2", quietly=TRUE))install.packages("ggplot2")
在RStudio中默認使用美國數據源,如果下載慢,可指定國內鏡像,如清華、中科大等離自己物理距離較近的國內鏡像倉庫。
圖. R包安裝源的選擇。選擇Tools菜單 —— Global Options選項,按上圖標識順序切換為國內源。
也可以在代碼層面指定安裝源,如清華鏡像源”https://mirrors.tuna.tsinghua.edu.cn/CRAN"。
site="https://mirrors.tuna.tsinghua.edu.cn/CRAN"if (!requireNamespace("ggplot2", quietly=TRUE))
install.packages("ggplot2", repos=site)
CRAN來源包的菜單安裝
使用RStudio中的包管理頁面安裝:
選擇右下角 Packages選項卡,
點擊Install;
輸入包名,會有提示,可供選擇;
點擊Install安裝。
Bioconductor包安裝
Bioconductor是專門發布生信相關R包的網站,目前已經發了1903個R包。
網址:https://bioconductor.org
安裝Bioconductor的包,需要先安裝CRAN來源的BiocManager包,此處以edgeR為例。注:edgeR是當前較流行的具有測序數據差異比較功能的R包。
# 檢查BiocManager包是否存在,不存在則安裝if (!requireNamespace("BiocManager", quietly = TRUE))
install.packages("BiocManager")
# 使用BiocManager安裝Bioconductor的包
if (!requireNamespace("edgeR", quietly = TRUE))
BiocManager::install("edgeR")
Github的R包安裝
CRAN和Bioconductor內都是經過檢測正式發布的R包。還有很多臨時、或正在開發中的包只存在Github,如果需要使用這些R包,我們可以使用開發者工具devtools進行安裝。
安裝Github的R包,輸入名稱由用戶名和包名兩部分組成。以我編寫的amplicon包為例,保存于github中的microbiota用戶下,其提供了擴增子分析常用統計分析和繪圖樣式的函數。
# 檢查devtools是否存在,沒有則安裝if (!requireNamespace("devtools", quietly = TRUE))
install.packages("devtools")
# 加載devtools
library(devtools)
# 判斷amplicon是否存在,沒有使用devtools安裝
if (!requireNamespace("amplicon", quietly = TRUE))
devtools::install_github("microbiota/amplicon")
此外,很多R包的最新版,也都在github上保存,想要體驗最新版本的功能,也可查找軟件的github倉庫位置并采用上述方法安裝所需版本。
注意:R的源碼方式安裝,有時還需要額外安裝Rtools。Windows版本下載鏈接:https://cran.r-project.org/bin/windows/Rtools/
R數據基本類型
數值型 (numeric):
1, 2, 3, 5.1, 6.6, 1e5等 (繪圖時一般作為連續變量對待)
字符型 (character):
”yongxin”, “meta-genome”, ‘yi sheng xin’ (單個或多個字母或其他符號的組合,需要用引號括起)
邏輯型 (logical):
TRUE, FALSE (布爾值),通常縮寫為T和F
缺失值:
NA, NaN, Inf
空值:
NULL
圖. R語言數據結構。向量(vector)、矩陣(matrix)、數組(array)、數據框(data frame / table)、列表(lists)
圖. 向量(vector)、列表(lists)、矩陣(matrix)、數據框(data frame / table)的索引方式
向量(vector)
向量存儲相同的數據類型。如果有字符型元素,所有元素都轉換為字符型。
is.atomic() 判斷是否為向量。
is.vector() 判斷沒有屬性或僅有names屬性的向量為真(TRUE)
a # 判斷一個變量是不是vectoris.vector(a)
is.atomic(a)
因子(factor)
因子是節省存儲空間的特殊類型,適用于存在較多重復值情況。每個原值只存儲一份,在原數據中用數字表示。去重后的原值被稱為水平 (level),可以修改順序。繪圖時調整順序就是使用的這個。
a b # 注意levels默認是字母順序b
更改因子的順序
# 設置levelsb levels=c("y","x","s","e","g","i","h","n"),
ordered=T)
b
矩陣(matrix)
矩陣是二維的數組(array),所有元素都是相同類型。可以使用[row, col]索引。
常用矩陣相關函數:
dim():
獲取矩陣的維數
rowSums(), colSums():
獲取行列加和
max(), min():
獲取最大、最小值
a a
a[3,4]
列表(list)
列表是不同類型的變量組合在一起,常用于存儲各種復雜類型函數或繪圖的輸出數據。
ysx_list staff=c("LYX","CL","ZX","CT"),contentL=list(R=c("basic","plot"),
Linux=c("basic","windows")))
ysx_list
數據框(dataframe)
數據框,子列表長度一致的特殊list,具有list和matrix的雙重特性,通常與matrix可互換。
若在程序運行時碰到”‘x’ must be matrix”,需要做下as.matrix轉換;若是”‘x’ must be data.frame”,需要做下as.data.frame轉換。這里的x是你提供的數據變量。
R數據類型 – 查看
storage.mode 查看變量在內存中存儲的方式
class 查看對象所屬的類
mode 查看對象的類型
typeof 查看對象的類型
str 查看數據結構
summary 查看數據內容總結
查看數據類型
mode(a)class(a)
typeof(a)
storage.mode(a)
mode(ysx_list)
class(ysx_list)
class(ysx_list$web)
storage.mode(class(ysx_list$web))
class(ysx_list$staff)
storage.mode(ysx_list$staff)
typeof(2)
typeof(as.integer(2))
R數據讀寫
read.table讀入數據存儲為數據框
read.table常用的4個參數。輸入文件;標題行(header),可選T/F;行名(row.names),默認為NULL,通常指定第一列(1);分隔符(sep)默認為空,通常要指定制表符(\t)或分號(;)。
其他常用參數:
跳過注釋行:
comment.char = “#”,如果表頭包含#且需要讀入,可改為空””。
是否轉換為因子:
在3.x版本時默認轉換,在4.x時默認不轉換,想要轉換為因子,需要使用stringsAsFactors=T自動轉換。
更多幫助查看?read.table。
write.table寫數據框或矩陣到文件
write.table常用的參數。
要保存的變量(x)
輸出文件名(file),要使用雙引號;
追加寫入(append):
默認(F)不追加,沒文件創建新文件;
有文件時將覆蓋;
想要多次累計寫入改為T;
引號(quote):
默認為T,每個單元格加雙引號,建議改為F;
分隔符(sep)默認為空格,通常要指定制表符(\t)或分號(;);
換行符(eol):
默認為linux換行符(\n),當不需要換行時可改為空””;
行名(row.names),默認為T,不需要使用F,否則會出現1/2/3的行編號;
列名(col.names),默認為T,不需要使用F;
統計t-test/anova
t-test兩組比較
我們先隨機生成兩組數據,然后用T檢驗進行顯著性分析。
# rnorm生成以0為均值,1為標準差的10個數A = rnorm(10)
# rnorm生成以3為均值,1為標準差的10個數
B = rnorm(10, 3, 1)
# t檢驗
t.test(A, B)
anova多組比較
head(iris) # 顯示數據格式
# anova統計不同物種花萼長寬數據
model = aov(Sepal.Length ~ Species, data=iris)
Tukey_HSD # 顯示統計結果
Tukey_HSD$Species
箱線圖展示組間差異
library加載ggplot2包,采用內置鳶尾花數據繪制箱線圖,并用ggsave保存為指定大小的PDF矢量圖。
library(ggplot2)# ggplot命令繪圖,指定數據、x、y、顏色、圖表類型
(p = ggplot(iris, aes(x=Species, y=Sepal.Length, color=Species)) +
geom_boxplot())
# ggsave保存圖片
ggsave(paste0("26boxplot.pdf"), p, width=89, height=59, units="mm")
更多ggplot2的內容,請閱讀ggplot2作者Hadley Wickham編寫的《ggplot2 Elegant Graphics for Data Analysis》。此書2016年由Springer出版,目前已經被引用2萬余次。本書的最新版及源代碼詳見:https://github.com/hadley/ggplot2-book
此外公眾號也分享過學習ggplot2繪圖基礎筆記如下,供參考:
ggplot2高效實用指南 (可視化腳本、工具、套路、配色)
ggplot2地理信息可視化 上 下
1初識ggplot2繪制幾何對象
2圖層的使用—基礎、加標簽、注釋
3工具箱—誤差線、加權數、展示數據分布
4語法基礎
5通過圖層構建圖像
6標度、軸和圖例
7定位-分面和坐標系
8主題設置、存儲導出
9繪圖需要的數據整理技術
ggThemeAssist:鼠標調整ggplot2主題,不用再記這些代碼啦!
不需要懂得編程,但卻可以使用ggplot2畫出論文級別的圖?esquisse
ggplot版本的華夫餅圖吧
參考文獻
ggplot2 Elegant Graphics for Data Analysis https://github.com/hadley/ggplot2-book
宏基因組R相關教程 https://mp.weixin.qq.com/s/5jQspEvH5_4Xmart22gjMA
生信寶典R系列教程 http://mp.weixin.qq.com/s/i71OMaUu6QtcY0pt1njHQA
責編:劉永鑫 中科院遺傳發育所
版本更新歷史
1.0.0,2020/8/30,劉永鑫,初稿
1.0.1,2020/8/31,吳翔宇 寧波大學,全文校對
1.0.3,2020/8/31,劉永鑫,整合校對
猜你喜歡
10000+:菌群分析?寶寶與貓狗?梅毒狂想曲 提DNA發Nature?Cell專刊?腸道指揮大腦
系列教程:微生物組入門 Biostar 微生物組 ?宏基因組
專業技能:學術圖表?高分文章?生信寶典 不可或缺的人
一文讀懂:宏基因組 寄生蟲益處 進化樹
必備技能:提問 搜索 ?Endnote
文獻閱讀 熱心腸 SemanticScholar Geenmedical
擴增子分析:圖表解讀 分析流程 統計繪圖
16S功能預測 ? PICRUSt ?FAPROTAX ?Bugbase Tax4Fun
在線工具:16S預測培養基 生信繪圖
科研經驗:云筆記 ?云協作 公眾號
編程模板:?Shell ?R Perl
生物科普:??腸道細菌?人體上的生命?生命大躍進 ?細胞暗戰 人體奧秘 ?
寫在后面
為鼓勵讀者交流、快速解決科研困難,我們建立了“宏基因組”專業討論群,目前己有國內外5000+ 一線科研人員加入。參與討論,獲得專業解答,歡迎分享此文至朋友圈,并掃碼加主編好友帶你入群,務必備注“姓名-單位-研究方向-職稱/年級”。PI請明示身份,另有海內外微生物相關PI群供大佬合作交流。技術問題尋求幫助,首先閱讀《如何優雅的提問》學習解決問題思路,仍未解決群內討論,問題不私聊,幫助同行。
學習16S擴增子、宏基因組科研思路和分析實戰,關注“宏基因組”
總結
以上是生活随笔為你收集整理的dataframe第二列 r语言_123.R简介和统计绘图的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 云服务器主机性能测试,云服务器主机性能测
- 下一篇: linux mysql 5.6.14_C