學(xué)習(xí)小組Day6筆記--飯飯

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)行配置。

圖1.png

那么,就需要進(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()$reposoptions()$BioC_mirror即可發(fā)線還是我們配置的國(guó)內(nèi)鏡像,無(wú)需再次進(jìn)行。

圖2.png
神仙操作!從此再也不用每次下載包都要設(shè)置鏡像了。

二、安裝R包

重要?。?! 確保聯(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
圖3.png

花花:“學(xué)R語(yǔ)言要高冷,能拒絕就拒絕?!?/p>

三、加載R包

library(包)或者require(包)均可

圖4.png

四、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è)類別標(biāo)簽Species。

  • 新增列:mutate()
    mutate(test, 新增的列名 = 新增的內(nèi)容)
    圖5.png
  • 按列篩選:select()
    selsect(test, 列號(hào)或者列名)
    圖6.png
  • 篩選行:filter()
    filter(test,Species=="setosa")某一列名加上限制條件
    圖7.png
  • 按某一列或某幾列對(duì)表格進(jìn)行排序:arrange()
    arrange(test, Sepal.Length) #默認(rèn)按照這一列從小到大排序
    arrange(test, desc(Sepal.Length)) #按照這一列從大到小排序
    圖8.png
  • 匯總: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)差
    圖9.png

五、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命令使用
    圖10.png
  • 統(tǒng)計(jì)某列的unique值count()
    count(test,Species) #統(tǒng)計(jì)Species列中每項(xiàng)的重復(fù)數(shù)
    圖11.png

六、dplyr處理關(guān)系數(shù)據(jù)

將2個(gè)表進(jìn)行連接,注意不要引入factor

首先創(chuàng)建兩個(gè)數(shù)據(jù)框,test1和test2
  • 取交集:內(nèi)連inner_join()
    inner_join(test1, test2, by = "x") #取兩個(gè)表中x的交集,連在一起
    圖13.png
  • 左連: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)
    圖14.png
  • 全連:full_join()
    full_join( test1, test2, by = 'x')
    圖15.png
  • 半連接:semi_join #返回能夠與y表匹配的x表所有記錄
    semi_join(x = test1, y = test2, by = 'x') #
    圖16.png
  • 反連接: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ù)。


圖18.png

圖19.png

今天的內(nèi)容有點(diǎn)多,腦袋懵懵的......是一堆需要經(jīng)常用才會(huì)記住的內(nèi)容了~

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容