安裝加載dplyr
options("repos" =c(CRAN="https://mirrors.tuna.tsinghua.edu.cn/CRAN/")) #清華源鏡像
options(BioC_mirror="https://mirrors.ustc.edu.cn/bioc/") #中科院鏡像
install.packages("dplyr")#安裝
library(dplyr)#運(yùn)行
示例數(shù)據(jù)使用內(nèi)置數(shù)據(jù)集iris的簡(jiǎn)化版:
test <- iris[c(1:2,51:52,101:102),]
dplyr五個(gè)基礎(chǔ)函數(shù)
1.mutate()
新增列
mutate(test, new = Sepal.Length * Sepal.Width)
2.select()
按列篩選
(1)按列號(hào)篩選
例:
select(test,1)篩選第一列
select(test,c(1,5))篩選第1器紧、5列
(2)按列名篩選
select(test,Sepal.Length) 按照列名篩選(該命令為篩選名為Sepal.Length的列)渊迁。若篩選多個(gè)列,列名之間用,隔開(kāi)
3.filter()
篩選行
filter(test, Species == "setosa")篩選行名為setosa的行
filter(test, Species == "setosa"&Sepal.Length > 5 )篩選行名為setosa逆屡,且名為Sepal.Length的列中數(shù)據(jù)>5的行
filter(test, Species %in% c("setosa","versicolor"))篩選行名為setosa或versicolor的行
4.arrange()
按某1列或某幾列對(duì)整個(gè)表格進(jìn)行排序
arrange(test, Sepal.Length)以Sepal.Length列的數(shù)據(jù)大小對(duì)整個(gè)表格進(jìn)行重新排序 默認(rèn)從小到大排序
arrange(test, desc(Sepal.Length)) 用desc改為從大到小
summarise()
用于匯總
summarise(test, mean(Sepal.Length), sd(Sepal.Length)) 計(jì)算Sepal.Length的平均值和標(biāo)準(zhǔn)差
——mean:平均誉察;sd:標(biāo)準(zhǔn)差
group_by(test, Species)
summarise(group_by(test, Species),mean(Sepal.Length), sd(Sepal.Length))
先按照Species分組与涡,計(jì)算每組Sepal.Length的平均值和標(biāo)準(zhǔn)差
dplyr兩個(gè)實(shí)用技能
1:管道操作
%>% (cmd/ctr + shift + M)
%>%來(lái)自dplyr包的管道函數(shù),我們可以將其理解為車間里的流水線冒窍,經(jīng)過(guò)前一步加工的產(chǎn)品才能進(jìn)入后一步進(jìn)一步加工递沪,其作用是將前一步的結(jié)果直接傳參給下一步的函數(shù),從而省略了中間的賦值步驟综液,可以大量減少內(nèi)存中的對(duì)象款慨,節(jié)省內(nèi)存。
符號(hào)%>%谬莹,這是管道操作檩奠,其意思是將%>%左邊的對(duì)象傳遞給右邊的函數(shù)。
test %>%
group_by(Species) %>%
summarise(mean(Sepal.Length), sd(Sepal.Length))
2:統(tǒng)計(jì)某列的unique值
count
count(test,Species)
用于統(tǒng)計(jì)每一個(gè)數(shù)據(jù)列獨(dú)特值的個(gè)數(shù)
dplyr處理關(guān)系數(shù)據(jù)
1.合并成表格
options(stringsAsFactors = F)在讀入數(shù)據(jù)時(shí),遇到字符串之后,不將其轉(zhuǎn)換為factors,仍然保留為字符串格式
例:
test1 <- data.frame(x = c('b','e','f','x'),
z = c("A","B","C",'D'),
stringsAsFactors = F)
test2 <- data.frame(x = c('a','b','c','d','e','f'),
y = c(1,2,3,4,5,6),
stringsAsFactors = F)
2.連接表格
①內(nèi)連inner_join
例:
inner_join(test1, test2, by = "x")
以共同的名字為x的列中附帽,數(shù)據(jù)相同的行結(jié)合成為一個(gè)表
②左連left_join
例:
left_join(test1, test2, by = 'x')
left_join(test2, test1, by = 'x')
哪個(gè)表格在前面埠戳,就以哪個(gè)表格的x列為基準(zhǔn)連接表格
③全連full_join
例:
full_join( test1, test2, by = 'x')
④半連接:semi_join
例:
semi_join(x = test1, y = test2, by = 'x')
以x列為基準(zhǔn),與y表匹配的x表所有記錄
⑤反連接:無(wú)法與y表匹配的x表的所有記錄anti_join
例:
anti_join(x = test2, y = test1, by = 'x')
以x列為基準(zhǔn)整胃,無(wú)法與y表匹配的x表所有記錄
⑥簡(jiǎn)單合并
bind_rows() 合并有相同列數(shù)的兩個(gè)表格
即將另一個(gè)表格接在一個(gè)表格下面
bind_cols() 合并有相同行數(shù)的兩個(gè)表格
即將另一個(gè)表格接在一個(gè)表格右邊
表格名之間用,分隔
bind_rows(test1, test2)
bind_cols(test1, test3)