Rstudio的R包學(xué)習(xí)
R包是多個函數(shù)的集合率碾,具有詳細的說明和示例叔营。
安裝和加載R包
鏡像設(shè)置
圖片來源生信星球公眾號
filie.edit(`~/.Rprofile`)
在腳本編輯器中的代碼
options("repos" = c(CRAN="https://mirrors.tsinghua.edu.cn/CRAN/"))
options(BioC_mirror="https://mirrors.ustc.edu.cn/bioc/")
options()$repos
和options()$BioC_mirror
l查看鏡像配置
R包安裝命令:
install.packages("包”)
或者BiocManager::install("包")
取決于你要安裝的包存在于CRAN網(wǎng)站還是Biocductor
R包加載命令
library(包)
或者 require(包)
dpiyr的五個基礎(chǔ)函數(shù)
數(shù)據(jù)用內(nèi)置數(shù)據(jù)集iris的簡化版
test <- iris[c(1:2,51:52,101:102),]
- 新增列
mutate()
mutate(test, new = Sepal.Length * Sepal.Width)
- 按列篩選
select()
按列號篩選
-
select(test,1)
# 從test中篩選第一列 -
select(test,c(1,5))
# 從test中篩選第一列和第五列 -
select(test,Sepal.Length)
# 從test中篩選Sepal.Length列
按列名篩選
select(test, Petal.Length, Petal.Width)
# 從test中篩選Petal.Length和Petal.Width。
vars <- c("Petal.Length", "Petal.Width")
# 將篩選出來的這兩列賦值為vars
select(test, one_of(vars))
# one_of是用來聲明選擇對象的所宰,如one_of("x","y")就表明選擇x,y變量审编,這里vars前面賦值了,將前面的賦值直接寫select(test, one_of(c("Petal.Length", "Petal.Width")))
,結(jié)果是一樣的歧匈。
- 篩選行(過濾器)
filter()
-
filter(test, Species == "setosa")
# 從test中篩選Species列中為setosa的行 -
filter(test, Species == "setosa"&Sepal.Length > 5 )
# 從test中篩選Species列中為setosa且Sepal.Length 列的值大于5的行 -
filter(test, Species %in% c("setosa","versicolor"))
# 從test中篩選Species列為setosa和versicolor的行垒酬,(%in%
# 相當(dāng)于match()函數(shù)的一個縮寫。用來判斷一個數(shù)組或矩陣是否包含在另一個數(shù)組或矩陣?yán)铩#?/li>
- 按某1列或某幾列對整個表格進行排序
arrange()
-
arrange(test, Sepal.Length
) # 對test中的Sepal.Length列排序勘究,默認(rèn)從小到大排序 -
arrange(test, desc(Sepal.Length))
# 對test中Sepal.Length列從大到小排列 (desc()
從大到小排序)
- 匯總
summarise()
-
summarise(test, mean(Sepal.Length), sd(Sepal.Length))
# 計算test中Sepal.Length列的平均值和標(biāo)準(zhǔn)差 - ·group_by(test, Species)· # test先按照Species分組矮湘,計算每組Sepal.Length的平均值和標(biāo)準(zhǔn)差
-
summarise(group_by(test, Species),mean(Sepal.Length), sd(Sepal.Length))
# 先對test的Species列分組,然后求各組Sepal.Length的均值和標(biāo)準(zhǔn)差
dplyr的兩個實用技能
-
管道操作
%in%
(cmd/ctr+shift+M)
加載任意一個tidyverse包即可用管道符號
圖片來源生信星球公眾號
(這一點不太懂) 統(tǒng)計某列的unique值
count()
count(test,Species)
# 統(tǒng)計test中Species中的種類口糕,每種有多少個(這個功能有點像Excel的數(shù)據(jù)透視嚯)
dplyr處理關(guān)系數(shù)據(jù)
即將2個表進行連接缅阳,注意不要引入factor 代碼options(stringsAsFactors = F)
-
test1 <- data.frame(x = c('b','e','f','x'), z = c("A","B","C",'D'), stringsAsFactors = F)
test1 -
test2 <- data.frame(x = c('a','b','c','d','e','f'), y = c(1,2,3,4,5,6), stringsAsFactors = F)
test2
- 內(nèi)連取交集
inner_join()
inner_join(test1, test2, by = "x")
# test1和test2根據(jù)x取交集
內(nèi)連取交集 - 左連
left_join()
-
left_join(test1, test2, by = 'x')
#橫向合并,test1在前邊景描,以test1的x列為準(zhǔn)
test1在前
left_join(test2, test1, by = 'x')
#橫向合并十办,test2在前邊,以test2的x列為準(zhǔn)
test2在前
- 全連
full_join()
full_join( test1, test2, by = 'x')
# 兩個表合并超棺,提取共同的x向族,然后根據(jù)兩表將其他的列補齊
image.png
image.png
注意:表格的順序不同,得到的結(jié)果會不同 - 半連接:返回能夠與y表匹配的x表所有記錄
semi_join()
-
semi_join(x = test1, y = test2, by = 'x')
# 返回與test2匹配的test1的所有記錄
半連接的結(jié)果
- 反連接:返回?zé)o法與y表匹配的所有記錄
anti_join()
anti_join(x = test2, y = test1, by = 'x')
# 返回?zé)o法與test1匹配的test2的所有記錄
反連接的結(jié)果 - 簡單合并
bind_rows()
函數(shù)需要兩個數(shù)據(jù)框的列數(shù)相同
bind_cols()
函數(shù)需要兩個數(shù)據(jù)框的行數(shù)相同
test1 <- data.frame(x = c(1,2,3,4), y = c(10,20,30,40))
test1
test2 <- data.frame(x = c(5,6), y = c(50,60))
test2
test3 <- data.frame(z = c(100,200,300,400))
test3
-
bind_rows(test1, test2)
# test1和test2行合并
合并行 -
bind_cols(test1, test3)
# test1和test3列合并
列合并
行合并列數(shù)要相同棠绘,列合并行數(shù)要相同