2020-04-08
今天的內(nèi)容是學(xué)習(xí)R包(多個(gè)函數(shù)的集合),以dplyr為例。
一、配置Rstudio的下載鏡像
CRAN的鏡像沒(méi)辦法用來(lái)下載Bioconductor的包比规,為了保證我們可以自定義CRAN和Bioconductor的下載鏡像,可以在Rstudio中通過(guò)兩行代碼進(jìn)行設(shè)置拦英。參考文章:你還在每次配置Rstudio的下載鏡像嗎?中的介紹蜒什,發(fā)現(xiàn)使用兩行代碼配置好下載鏡像后,再次打開(kāi)Rstudio設(shè)置的國(guó)內(nèi)鏡像就不存在了龄章,還需重新進(jìn)行配置吃谣。
那么,就需要進(jìn)入高級(jí)模式:需要用到R的配置文件
.Rprofile
這里需要科普Rstudio最重要的兩個(gè)配置文件:在剛開(kāi)始運(yùn)行Rstudio的時(shí)候做裙,程序會(huì)查看許多配置內(nèi)容岗憋,其中一個(gè)就是.Renviron,它是為了設(shè)置R的環(huán)境變量锚贱;而.Rprofile就是一個(gè)代碼文件仔戈,如果啟動(dòng)時(shí)找到這個(gè)文件,那么就替我們先運(yùn)行一遍(這個(gè)過(guò)程就是在啟動(dòng)Rstudio時(shí)完成的)拧廊。
file.edit('~/.Rprofile') #編輯文件
options("repos" =c(CRAN="https://mirrors.tuna.tsinghua.edu.cn/CRAN/")) #對(duì)應(yīng)清華源
options(BioC_mirror="https://mirrors.ustc.edu.cn/bioc/") #對(duì)應(yīng)中科大源监徘,當(dāng)然其他地區(qū)的鏡像也可以
最后,保存吧碾、重啟Rstudio凰盔、再運(yùn)行options()$repos
和options()$BioC_mirror
即可發(fā)線還是我們配置的國(guó)內(nèi)鏡像,無(wú)需再次進(jìn)行倦春。
二睁本、安裝R包
重要D蚵!呢堰! 確保聯(lián)網(wǎng)操作抄瑟!
R包的安裝命令:
包存在于CRAN網(wǎng)站:install.packages("包")
包存在于Bioconductor網(wǎng)站:BiocManager::install("包")
以下載dplyr包為例皮假,安裝過(guò)程中并不是一帆風(fēng)順,出現(xiàn)了提示:有二進(jìn)制版本骂维,但源代碼是后來(lái)的钞翔,是否要從源代碼安裝需要編譯的包,回答no如何知道包存在于哪里?----谷歌搜索吖枉疼。
花花:“學(xué)R語(yǔ)言要高冷席舍,能拒絕就拒絕布轿。”
三、加載R包
library(包)
或者require(包)
均可
四汰扭、dplyr五個(gè)基礎(chǔ)函數(shù)學(xué)習(xí)
示例數(shù)據(jù)使用內(nèi)置數(shù)據(jù)集iris的簡(jiǎn)化版稠肘,選取iris中1-2行,51-52行萝毛,101-102行的元素项阴。
test <- iris[c(1:2,51:52,101:102),]
R語(yǔ)言內(nèi)置了許多著名的數(shù)據(jù)集笆包,iris是其中的一種环揽,中文名是鳶尾花,有四個(gè)屬性庵佣,分別是Sepal.Length(花萼長(zhǎng)度)歉胶,Sepal.Width(花萼寬度),Petal.Length(花瓣長(zhǎng)度)巴粪,Petal.Width(花瓣寬度)通今,以及一個(gè)類(lèi)別標(biāo)簽Species。
-
新增列:
mutate()
mutate(test, 新增的列名 = 新增的內(nèi)容)
-
按列篩選:
select()
selsect(test, 列號(hào)或者列名)
-
篩選行:
filter()
filter(test,Species=="setosa")
某一列名加上限制條件 -
按某一列或某幾列對(duì)表格進(jìn)行排序:
arrange()
arrange(test, Sepal.Length) #默認(rèn)按照這一列從小到大排序
arrange(test, desc(Sepal.Length)) #按照這一列從大到小排序
-
匯總:
summarise()
結(jié)合group_by進(jìn)行分組肛根,實(shí)用性更強(qiáng)
group_by(test, Species) #按照Species分組
summarise(test, mean(Sepal.Length), sd(Sepal.Length)) #計(jì)算Sepal.Length的平均值和標(biāo)準(zhǔn)差
summarise(group_by(test, Species),mean(Sepal.Length), sd(Sepal.Length)) #先按照Species分組辫塌,計(jì)算每組Sepal.Length的平均值和標(biāo)準(zhǔn)差
五、dplyr兩個(gè)實(shí)用技能
- ** 管道操作 %>% (快捷鍵:cmd/ctr + shift + M)**
內(nèi)涵:將左邊的值管道輸出為右邊調(diào)用的函數(shù)的第一個(gè)參數(shù)派哲。
test %>% group_by(Species) %>% summarise(mean(Sepal.Length), sd(Sepal.Length))
#把按照Species分組的結(jié)果給后面summarise命令使用 -
統(tǒng)計(jì)某列的unique值
count()
count(test,Species) #統(tǒng)計(jì)Species列中每項(xiàng)的重復(fù)數(shù)
六臼氨、dplyr處理關(guān)系數(shù)據(jù)
首先創(chuàng)建兩個(gè)數(shù)據(jù)框芭届,test1和test2將2個(gè)表進(jìn)行連接,注意不要引入factor
-
取交集:內(nèi)連
inner_join()
inner_join(test1, test2, by = "x") #取兩個(gè)表中x的交集一也,連在一起
-
左連:
left_join()
left_join(test1, test2, by = 'x') #以test1的x為基準(zhǔn)將2個(gè)表連起來(lái)
left_join(test2, test1, by = 'x') #以test1的x為基準(zhǔn)將2個(gè)表連起來(lái)
-
全連:
full_join()
full_join( test1, test2, by = 'x')
-
半連接:
semi_join #返回能夠與y表匹配的x表所有記錄
semi_join(x = test1, y = test2, by = 'x') #
-
反連接:
anti_join() #返回?zé)o法與y表匹配的x表所有記錄
anti_join(x = test2, y = test1, by = 'x') #返回test2中x與test1中無(wú)法匹配的內(nèi)容
- *簡(jiǎn)單合并
注意,bind_rows()函數(shù)需要兩個(gè)表格列數(shù)相同喉脖,而bind_cols()函數(shù)則需要兩個(gè)數(shù)據(jù)框有相同的行數(shù)。
首先建立三個(gè)數(shù)據(jù)框test1抑月、test2树叽、test3,其中test1與test2有相同的列數(shù)谦絮,test1與test3有相同的行數(shù)题诵。
今天的內(nèi)容有點(diǎn)多,腦袋懵懵的......是一堆需要經(jīng)常用才會(huì)記住的內(nèi)容了~