學(xué)習(xí)R包
這是跟隨生信星球?qū)W習(xí)小組學(xué)習(xí)的第六天的課程,最近要跟門(mén)診桨踪,不像病房相對(duì)自由一些老翘,時(shí)間有點(diǎn)緊,沒(méi)有按時(shí)完成花花交的任務(wù)锻离,很抱歉铺峭。
上一節(jié)課學(xué)習(xí)了有一些基礎(chǔ)的R語(yǔ)言的代碼,感覺(jué)我們的課程很好纳账,在初學(xué)者入門(mén)時(shí)逛薇,交給他們良好的學(xué)習(xí)習(xí)慣,這才是事半功倍的好方法疏虫,在建立某一個(gè)項(xiàng)目的時(shí)候,應(yīng)該在RStudio中新建~.Rproj
的文件夾,這樣不同的項(xiàng)目都有各自的文件夾卧秘,管理呢袱、操作起來(lái)都會(huì)方便,以及如何保存一段代碼翅敌,一邊之后再次運(yùn)行羞福,當(dāng)然重要的是帶我們初識(shí)R中重要的兩種數(shù)據(jù)格式,vector
data.frame
蚯涮,各自額組成治专,如何從中抓取想要的數(shù)據(jù),這都是基礎(chǔ)的知識(shí)遭顶。今天又進(jìn)入了R重要的組成packages
张峰,形形色色的包,可以幫助實(shí)現(xiàn)統(tǒng)計(jì)棒旗、作圖喘批,幾乎無(wú)所不能,因此在生物醫(yī)學(xué)中铣揉,R語(yǔ)言運(yùn)用也十分適宜以及廣泛饶深。
鏡像設(shè)置
如果平時(shí)不去設(shè)置下載包的源地址,那么會(huì)默認(rèn)的使用國(guó)外CRAN的鏡像逛拱,這樣下載包的速度會(huì)很慢敌厘,我之前沒(méi)有修改鏡像時(shí),一到晚上下載速度就不行了朽合,經(jīng)常失敗告終
工欲善其事必先利其器
修改RStudio的包安裝鏡像到國(guó)內(nèi)服務(wù)器额湘,會(huì)十分便利,這當(dāng)然依靠配置軟件環(huán)境實(shí)現(xiàn)旁舰。
有三種方式:
- 點(diǎn)擊RStudio中的Tools,進(jìn)入Global Options中锋华,點(diǎn)擊packages,可以添加鏡像網(wǎng)站URL,更改自己下載包的鏡像站點(diǎn)箭窜。
- 使用代碼更改鏡像網(wǎng)站毯焕。
# options函數(shù)就是設(shè)置R運(yùn)行過(guò)程中的一些選項(xiàng)設(shè)置
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ū)的鏡像
但是這樣設(shè)置后,每次重啟R后磺樱,仍然需要再次設(shè)置纳猫。
- 高級(jí)方法,一勞永逸竹捉。
利用R的配置文件.Rprofile
file.edit('~/.Rprofile')
新建配置文件芜辕。在新開(kāi)的窗口中,輸入
options("repos" = c(CRAN="https://mirrors.tuna.tsinghua.edu.cn/CRAN/"))
options(BioC_mirror="https://mirrors.ustc.edu.cn/bioc/")
options(download.file.method = 'libcurl')
options(url.method='libcurl')
有人問(wèn)块差,為什么我的代碼比花花給的多了兩行侵续?
其實(shí)我開(kāi)始時(shí)也是用的教程給的方法倔丈,但是發(fā)現(xiàn)配置文件做好了,但是下載不到任何包状蜗,最后也是花花老師提供的結(jié)局辦法需五。代碼貼上來(lái)了,以供有緣人使用轧坎。
開(kāi)始安裝
就是兩種命令
install.packages(“包”)
BiocManager::install(“包”)
具體使用那種下載宏邮,可以自行
加載 包
1. library(“包”)
2. require(“包”)
加載dplyr包,并調(diào)用iris數(shù)據(jù)集
關(guān)于dplyr
包介紹缸血,推薦如下鏈接dplyr包介紹學(xué)習(xí)
包內(nèi)內(nèi)置了數(shù)據(jù)集蜜氨,例如今天使用的iris
,Iris 鳶尾花數(shù)據(jù)集是一個(gè)經(jīng)典數(shù)據(jù)集捎泻,在統(tǒng)計(jì)學(xué)習(xí)和機(jī)器學(xué)習(xí)領(lǐng)域都經(jīng)常被用作示例飒炎。數(shù)據(jù)集內(nèi)包含 3 類(lèi)共 150 條記錄,每類(lèi)各 50 個(gè)數(shù)據(jù)族扰,每條記錄都有 4 項(xiàng)特征:花萼長(zhǎng)度厌丑、花萼寬度、花瓣長(zhǎng)度渔呵、花瓣寬度怒竿,可以通過(guò)這4個(gè)特征預(yù)測(cè)鳶尾花卉屬于(iris-setosa, iris-versicolour, iris-virginica)中的哪一品種。[1]
截取部分?jǐn)?shù)據(jù)進(jìn)行后續(xù)練習(xí)
test <- iris[c(1:2,51:52,101:102),]
截取iris數(shù)據(jù)集中的第1-2扩氢、51-52耕驰、101-102行蟆炊,命名為test
數(shù)據(jù)集
dplyr五個(gè)基礎(chǔ)函數(shù)
- mutate(),新增列
- select(),按列篩選:
按列號(hào)篩選遥缕、按列名篩選 -
filter()篩選行
- arrange(),按某1列或某幾列對(duì)整個(gè)表格進(jìn)行排序
函數(shù)默認(rèn)從大到小排列陆错,如果反過(guò)來(lái)遥巴,需要在參照的某一列前加desc()
參數(shù) - summarise():匯總
結(jié)合group_by
分組后,可以針對(duì)不同類(lèi)別的分組進(jìn)行數(shù)據(jù)統(tǒng)計(jì)
dplyr兩個(gè)實(shí)用技能
- 管道操作
%>%
(cmd/ctr + shift + M)
我對(duì)這個(gè)符號(hào)的簡(jiǎn)單理解就是有簡(jiǎn)單單一運(yùn)算逐漸累加到復(fù)雜大量運(yùn)算朽缴,將一個(gè)復(fù)雜的函數(shù)進(jìn)行拆解蝇完,再逐步賦值到下一步命令中洒敏。結(jié)構(gòu)會(huì)比較清晰明了咏花,看著也會(huì)舒服趴生,這個(gè)符號(hào)好神奇~~~
選定數(shù)據(jù)
分組處理
計(jì)算組間均數(shù) 標(biāo)準(zhǔn)差 - count統(tǒng)計(jì)某列的unique值
count()
函數(shù)統(tǒng)計(jì)多列文件
dplyr處理關(guān)系數(shù)據(jù)
創(chuàng)建兩組data.frame
,要求不要引入factor
options(stringsAsFactors = F)
test1 <- data.frame(x = c('b','e','f','x'),
z = c("A","B","C",'D'),
stringsAsFactors = F)
test1
x z
1 b A
2 e B
3 f C
4 x D
test2 <- data.frame(x = c('a','b','c','d','e','f'),
y = c(1,2,3,4,5,6),
stringsAsFactors = F)
test2
x y
1 a 1
2 b 2
3 c 3
4 d 4
5 e 5
6 f 6
兩組表格有相同的x列昏翰,其中test1
中的x
中有b e f
與test2
中的x
相交苍匆。
如果兩個(gè)表中的重合列名字不同,解決如下
names(test1)[1]="n1"
names(test2)[1]="n2"
test1 %>%
inner_join(test2,by=c("n1" = ''n2"))
## 或省去by
test1 %>%
inner_join(test2,c("n1" = ''n2"))
- 內(nèi)連inner_join,取交集
inner_join(test1, test2, by = "x")
x z y
1 b A 2
2 e B 5
3 f C 6
- 左連left_join
left_join(test1, test2, by = 'x')
x z y
1 b A 2
2 e B 5
3 f C 6
x D NA
left_join(test2, test1, by = 'x')
x y z
1 a 1
2 b 2 A
3 c 3
4 d 4
5 e 5 B
6 f 6 C
- 全連full_join
full_join( test1, test2, by = 'x')
x z y
1 b A 2
2 e B 5
3 f C 6
4 x D NA
5 a
6 c
7 d
- 半連接:返回能夠與y表匹配的x表所有記錄semi_join
semi_join(x = test1, y = test2, by = 'x')
x z
1 b A
2 e B
3 f C
- 反連接:返回?zé)o法與y表匹配的x表的所記錄anti_join
anti_join(x = test2, y = test1, by = 'x')
x y
1 a 1
2 c 3
3 d 4
在test2中有部分值無(wú)法與test1匹配棚菊,這里的函數(shù)便列出了不能匹配的數(shù)據(jù)
- 簡(jiǎn)單合并
bind_rows()函數(shù)需要兩個(gè)表格列數(shù)相同浸踩,而bind_cols()函數(shù)則需要兩個(gè)數(shù)據(jù)框有相同的行數(shù)
-
來(lái)自 鳶尾花(iris)數(shù)據(jù)集分析 ?