數(shù)據(jù)處理|R-dplyr

dplyr包實現(xiàn)數(shù)據(jù)的清洗處理爬迟,包括數(shù)據(jù)整合、關(guān)聯(lián)菊匿、排序付呕、篩選、匯總跌捆、分組等徽职。


1)安裝、加載dplyr包佩厚、準備數(shù)據(jù)

install.packages("dplyr") #加載dplyr包

library(dplyr) ?#載入dplyr包

使用dplyr包處理數(shù)據(jù)前姆钉,建議先將數(shù)據(jù)集轉(zhuǎn)換為tbl對象

data(iris) ?#本文使用iris示例數(shù)據(jù)集抄瓦。

class(iris) ?#簡單查看數(shù)據(jù)集

head(iris)

iris<-tbl_df(iris) ? ?#轉(zhuǎn)化tbl對象

2)數(shù)據(jù)記錄篩選(行篩選)

filter函數(shù):按指定條件篩選符合條件中邏輯判斷要求的數(shù)據(jù)記錄潮瓶。

filter(iris, Sepal.Length == 7)

Q:篩選花萼長大于7,花萼寬帶大于等于3的數(shù)據(jù)钙姊?

filter(iris, Sepal.Length > 7 & Sepal.Width>3.0)

Q:篩選出Species 為setosa或virginica的行

filter(iris,Species %in% c("setosa","virginica"))

3)變量篩選(列)

select函數(shù):可以通過指定列名選擇指定的變量進行分析毯辅,得到的為選擇的列。

select(iris,Sepal.Width,Petal.Length,Species)

其他特殊選擇煞额,可匹配:

select(iris,contains("." )) #選取名稱中含有字符的列

select(iris,ends_with("Length")) #選取名稱以指定字符串結(jié)尾的列

select(iris,starts_with("Sepal")) #選取名稱以指定字符串為開頭的列

select(iris,Sepal.Length:Petal.Width) #選取在Sepal.Length和Petal.Width之間的所有列(包含Sepal.Length和Petal.Width)

select(iris,-Species) #選取除Species以外的所有列

Select(iris,……)

區(qū)別:Filter&Select

Filter:通過一些準則選擇觀測值(行)

Select:通過名字來選擇變量(列)

更名變量名: Select ?& ?Rename

head(select(iris,Sepal.W=Sepal.Width)) #只會保留選擇的變量

head(rename(iris,Sepal.W=Sepal.Width)) #保留所有變量悉罕,可以用來改名

4)數(shù)據(jù)排序(重要,大小立镶,去除異常值)

arrange函數(shù)按給定的列名進行排序,默認為升序排列类早,也可以對列名加desc()進行降序排序媚媒。

arrange(iris,Sepal.Length) # 將數(shù)據(jù)按照Sepal.Length升序排序

Q:將數(shù)據(jù)Sepal.Length先升序,后Sepal.Width降序排序:

arrange(iris,Sepal.Length,desc(Sepal.Width))

5)變量變換/重構(gòu)

mulate()函數(shù)可以數(shù)據(jù)拓展涩僻,也可以在保留原變量的基礎(chǔ)上增加變量缭召,進行數(shù)據(jù)處理栈顷。

mutate(iris,sepal = Sepal.Length + Sepal.Width)

transmute()函數(shù)在擴展新變量的時候,會刪除所有原始變量嵌巷。

transmute(iris,sepal = Sepal.Length + Sepal. Width) #計算一個或多個新列并刪除原列

6)數(shù)據(jù)匯總

summarize()函數(shù)實現(xiàn)數(shù)據(jù)集聚合操作萄凤,將多個值匯總成一個值

summarise(iris,avg = mean(Sepal.Length))

利用概述函數(shù)概括數(shù)據(jù),輸入數(shù)值向量而返回單一數(shù)值:

first 向量的第一個值搪哪。

last 向量的最后一個值靡努。

IQR 向量的IQR(四分位距) 。

Min 晓折;Max Mean 惑朦;Median ;Var 漓概;Sd等

summarise(iris, max(Petal.Width), first(Sepal.Width)) #返回數(shù)據(jù)框中變量的最大值及第一四分位值

7)數(shù)據(jù)分組

group_by函數(shù)對數(shù)據(jù)進行分組后漾月,結(jié)合summarize函數(shù),可以對分組數(shù)據(jù)進行匯總統(tǒng)計胃珍。

Q:按品種分組梁肿,分別計算花萼寬度的均方差

summarise(group_by(iris,Species),sd=sd(Petal.Width))

8)連接操作符

dplyr包里還新引進了一個操作符,%>%, 使用時把數(shù)據(jù)集名作為開頭, 然后依次對此數(shù)據(jù)進行多步操作觅彰。

iris %>%group_by(Species) %>% summarise(sd=sd(Petal.Width)) #iris數(shù)據(jù)集吩蔑,按Species分組,匯總Petal.Width的sd值缔莲,

iris %>%group_by(Species) %>% mutate(sepal = Sepal.Length + Sepal.Width)

9)抽樣

sample_n()隨機抽取指定數(shù)目的樣本哥纫,sample_frac()隨機抽取指定百分比的樣本,默認都為不放回抽樣痴奏,通過設(shè)置replacement =TRUE可改為放回抽樣蛀骇,可以用于實現(xiàn)Bootstrap抽樣。

sample_n(mtcars, 50, replace = TRUE) #隨機有重復(fù)的取50行數(shù)

sample_frac(mtcars, 0.1, weight = 1 / mpg) #隨機無重復(fù)的以1/mpg值做權(quán)重取10%的數(shù)據(jù)

10)數(shù)據(jù)聯(lián)結(jié)

dplyr包也提供了數(shù)據(jù)集的連接操作读拆,如左連接擅憔、右連接、內(nèi)連接等:

inner_join(x,y,by = NULL) ?#內(nèi)連接檐晕,合并數(shù)據(jù)僅保留匹配的記錄

left_join(x,y,by = NULL) ?#左連接暑诸,向數(shù)據(jù)集x中加入匹配的數(shù)據(jù)集y記

right_join(x,y,by = NULL) ? #右連接,向數(shù)據(jù)集y中加入匹配的數(shù)據(jù)集x記錄

full_join(x,y,by = NULL) #全連接辟灰,合并數(shù)據(jù)保留所有記錄个榕,所有行

semi_join(x,y,by = NULL) #返回能夠與y表匹配的x表所有記錄

anti_join(x,y, by = NULL) ?#返回?zé)o法與y表匹配的x表的所有記錄

by設(shè)置兩個數(shù)據(jù)集用于匹配的字段名,默認使用全部同名字段進行匹配芥喇,如果兩個數(shù)據(jù)集需要匹配的字段名不同西采,可以直接用等號指定匹配的字段名,如继控, by = c("a" = "b")械馆,表示用x.a和y.b進行匹配胖眷。

11)數(shù)據(jù)合并

dplyr包中也添加了類似cbind()函數(shù)和rbind()函數(shù)功能的函數(shù),它們是bind_cols()函數(shù)和bind_rows()函數(shù)霹崎。

注意:bind_rows()函數(shù)需要兩個合并對象有相同的列數(shù)珊搀,而bind_cols()函數(shù)則需要兩個合并對象有相同的行數(shù)。


查看自帶的參考資料:vignette(package = "dplyr") vignette("introduction", package = "dplyr")



?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末尾菇,一起剝皮案震驚了整個濱河市境析,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌错沽,老刑警劉巖簿晓,帶你破解...
    沈念sama閱讀 206,126評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異千埃,居然都是意外死亡憔儿,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評論 2 382
  • 文/潘曉璐 我一進店門放可,熙熙樓的掌柜王于貴愁眉苦臉地迎上來谒臼,“玉大人,你說我怎么就攤上這事耀里◎阽停” “怎么了?”我有些...
    開封第一講書人閱讀 152,445評論 0 341
  • 文/不壞的土叔 我叫張陵冯挎,是天一觀的道長底哥。 經(jīng)常有香客問我,道長房官,這世上最難降的妖魔是什么趾徽? 我笑而不...
    開封第一講書人閱讀 55,185評論 1 278
  • 正文 為了忘掉前任,我火速辦了婚禮翰守,結(jié)果婚禮上孵奶,老公的妹妹穿的比我還像新娘。我一直安慰自己蜡峰,他們只是感情好了袁,可當我...
    茶點故事閱讀 64,178評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著湿颅,像睡著了一般载绿。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上油航,一...
    開封第一講書人閱讀 48,970評論 1 284
  • 那天卢鹦,我揣著相機與錄音,去河邊找鬼。 笑死冀自,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的秒啦。 我是一名探鬼主播熬粗,決...
    沈念sama閱讀 38,276評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼余境!你這毒婦竟也來了驻呐?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,927評論 0 259
  • 序言:老撾萬榮一對情侶失蹤芳来,失蹤者是張志新(化名)和其女友劉穎含末,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體即舌,經(jīng)...
    沈念sama閱讀 43,400評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡佣盒,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,883評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了顽聂。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片肥惭。...
    茶點故事閱讀 37,997評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖紊搪,靈堂內(nèi)的尸體忽然破棺而出蜜葱,到底是詐尸還是另有隱情,我是刑警寧澤耀石,帶...
    沈念sama閱讀 33,646評論 4 322
  • 正文 年R本政府宣布牵囤,位于F島的核電站,受9級特大地震影響滞伟,放射性物質(zhì)發(fā)生泄漏揭鳞。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,213評論 3 307
  • 文/蒙蒙 一诗良、第九天 我趴在偏房一處隱蔽的房頂上張望汹桦。 院中可真熱鬧,春花似錦鉴裹、人聲如沸舞骆。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽督禽。三九已至,卻和暖如春总处,著一層夾襖步出監(jiān)牢的瞬間狈惫,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評論 1 260
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留胧谈,地道東北人忆肾。 一個月前我還...
    沈念sama閱讀 45,423評論 2 352
  • 正文 我出身青樓,卻偏偏與公主長得像菱肖,于是被迫代替她去往敵國和親客冈。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,722評論 2 345

推薦閱讀更多精彩內(nèi)容

  • 1. 數(shù)據(jù)操作:dplyr包應(yīng)用 dplyr包是為數(shù)據(jù)分析提供了一系列快捷有效的操作稳强,其中有五個關(guān)鍵函數(shù)基本可以解...
    100gle閱讀 3,515評論 0 7
  • ORA-00001: 違反唯一約束條件 (.) 錯誤說明:當在唯一索引所對應(yīng)的列上鍵入重復(fù)值時场仲,會觸發(fā)此異常。 O...
    我想起個好名字閱讀 5,176評論 0 9
  • 1.包和數(shù)據(jù)的安裝 安裝dplyr包 安裝hflights包退疫,該軟件包中的飛機航班數(shù)據(jù)將用于本文中dplyr包各個...
    apricoter閱讀 9,374評論 0 17
  • 1渠缕、背景簡介 在數(shù)據(jù)分析工作中,經(jīng)常需要對原始的數(shù)據(jù)集進行清洗褒繁、整理以及變換亦鳞。常用的數(shù)據(jù)整理與變換工作主要包括:特...
    monkeylan閱讀 29,402評論 9 64
  • 突然一想,今年三月我還經(jīng)歷了一模后來是二模三模澜汤,今年我還在操場上高考一百天倒計時宣誓蚜迅,還有十八歲成人禮。今年...
    南鹿NL閱讀 241評論 0 1