Day6
今天學(xué)習(xí)的是R語言最重要的內(nèi)容,R包倦逐,包括鏡像的配置,R包的安裝及使用,走著
鏡像的配置準(zhǔn)備
- 查看鏡像
options()$repos
options()$BioC_mirror
-
運(yùn)行結(jié)果
查看結(jié)果
分別對應(yīng)清華源和中科大源曾我,沒問題
設(shè)置鏡像源粉怕,應(yīng)修改profile文件,在Rstudio中打開抒巢,并將以下兩句保存在文件中贫贝,文件位置在/R/etc中
options("repos"=c(CRAN="https://mirrors.tuna.tsinghua.edu.cn/CRAN/")) options(BioC_mirror="https://mirrors.ustc.edu.cn/bioc/")
R包的安裝
install.packages(“要安裝的包名稱”) #安裝R包
install.packages("名稱", repos = "https://mirrors.ustc.edu.cn/CRAN/") #指定鏡像地址
library("包名") #使用前要先載入R編譯環(huán)境
detach("package:包名") #將R包移除環(huán)境,但可以重新載入
remove.packages("包名") #卸載R包蛉谜,徹底抹殺
- 注意稚晚,用
detach("package:包名")
并不是卸載,只是移出了環(huán)境型诚,用library()
后仍可繼續(xù)使用
神器dplyr的基礎(chǔ)函數(shù)使用
- 新增列
mutate(test, new = Sepal.Length * Sepal.Width)
為test新增加一列客燕,名為new,值為Sepal.Length和Sepal.Width相乘
運(yùn)行結(jié)果 - 數(shù)據(jù)選擇
select()
select(test,2)
選擇test的第二列
運(yùn)行結(jié)果
select(test,Petal.Width)
篩選test中名為Petal.Width的這一列
運(yùn)行結(jié)果 - 數(shù)據(jù)篩選
filter()
與篩選行大同小異狰贯,可以按行數(shù)幸逆,名稱,以及數(shù)據(jù)的特性來篩選 - 數(shù)據(jù)重新排序
arrange()
arrange(test,Sepal.Width)
對test以Sepal.Width這一列數(shù)據(jù)進(jìn)行排序暮现,默認(rèn)為從小到大
運(yùn)行結(jié)果
arrange(test,desc(Sepal.Width))
帶上desc為從大到小排序
運(yùn)行結(jié)果 - 對數(shù)據(jù)進(jìn)行匯總
summarise()
summarise(test, mean(Sepal.Length), sd(Sepal.Length))
計(jì)算test中Sepal.Length這一列的平均數(shù)和標(biāo)準(zhǔn)差(也可以用來求極值还绘,求和,平均數(shù)栖袋,出現(xiàn)次數(shù)等拍顷,配合group_by
進(jìn)行分組可以實(shí)現(xiàn)更多功能)
運(yùn)行結(jié)果
神器dplyr的實(shí)用操作
- 管道函數(shù)
%>%
含義為直接將前一步的數(shù)據(jù)結(jié)果作為參數(shù)直接傳遞給下一步,省略了許多賦值過程
test%>%group_by(Species)%>%summarise(mean(Sepal.Length),sd(Sepal.Length))
如這里即為將test中的Species分組塘幅,再求平均數(shù)和標(biāo)準(zhǔn)差
運(yùn)行結(jié)果 - 統(tǒng)計(jì)各種數(shù)據(jù)出現(xiàn)的次數(shù)
count
count(test,Species)
統(tǒng)計(jì)test數(shù)據(jù)的Species列中昔案,有哪些數(shù)據(jù),各出現(xiàn)了幾次
運(yùn)行結(jié)果
神器dplyr中數(shù)據(jù)的連接關(guān)系
- 先生成兩個(gè)數(shù)據(jù)集t1和t2
t1 <- data.frame(x = c('a','b','c','x'), y = c("1","B","3",'D'))
t2 <- data.frame(x = c('a','b','c','d','e','f'), z = c(1,2,3,4,5,6))
兩個(gè)數(shù)據(jù)集 - 對數(shù)據(jù)集進(jìn)行左連接
left_join(t1,t2,by='x')
因?yàn)槭亲筮B接电媳,只會保留t1擁有的x對應(yīng)的y值和z值踏揣,而在t2中不存在x與z的關(guān)系,找不到對應(yīng)z值匾乓,則為NA
運(yùn)行結(jié)果 - 對數(shù)據(jù)集進(jìn)行左連接
right_join(t1,t2,by='x')
因?yàn)槭怯疫B接捞稿,只會保留t2擁有的x對應(yīng)的y值和z值,而在t1中不存在d拼缝、e娱局、f與y的關(guān)系,找不到對應(yīng)y值咧七,則為NA
運(yùn)行結(jié)果 - 對數(shù)據(jù)集進(jìn)行內(nèi)連接
inner_join(t1,t2,by='x')
相當(dāng)于交集衰齐,只會保留t1與t2均擁有的x與其所對應(yīng)的y值和z值
運(yùn)行結(jié)果 - 對數(shù)據(jù)集進(jìn)行全連接
full_join(t1,t2,by='x')
相當(dāng)于并集,將會保留所有的x于其對應(yīng)的y值和z值继阻,不存在的為NA
運(yùn)行結(jié)果 - 對數(shù)據(jù)集進(jìn)行半連接
semi_join(t1,t2,by='x')
半連接也是取交集耻涛,與內(nèi)連接的不同在于废酷,半連接只是篩選出t1與t2均擁有的x,但并不輸出t2的z值抹缕,只在t1內(nèi)部進(jìn)行篩選
運(yùn)行結(jié)果 - 對數(shù)據(jù)集進(jìn)行反連接
anti_join(t1,t2,by='x')
與半連接相反澈蟆,輸出t2中不存在的x值于其對應(yīng)的y值關(guān)系
運(yùn)行結(jié)果
相同點(diǎn):半連接與反鏈接均只對前者進(jìn)行篩選,不輸出后者的數(shù)據(jù)
- 數(shù)據(jù)集的合并
bind_rows(t1,t2)
#要求數(shù)據(jù)集有相同的列數(shù)歉嗓,不存在的仍輸出NA
bind_cols(t1,r1)
#要求數(shù)據(jù)集有相同的行數(shù)
運(yùn)行結(jié)果