R語(yǔ)言學(xué)習(xí)-dplyr包

不成系統(tǒng)學(xué)習(xí)的好處频敛,是會(huì)根據(jù)所需要的通過(guò)檢索一個(gè)個(gè)解決問(wèn)題蝶糯,但耽誤的時(shí)間不一定少;系統(tǒng)學(xué)習(xí)的缺點(diǎn)就是一開(kāi)始可能會(huì)無(wú)聊的堅(jiān)持不下去系奉。在處理數(shù)據(jù)時(shí)箭阶,覺(jué)得頭疼的數(shù)據(jù)挤安,其實(shí)dplyr包就可以簡(jiǎn)潔的解決掉谚殊,太贊了丧鸯。

來(lái)源于:dplyr 包的強(qiáng)大之處R語(yǔ)言必學(xué)包之dplyr包
主要函數(shù)

-select围肥、rename、filter蜂怎、mutate, transmute穆刻、group_by、summarize

選擇
select函數(shù)
  • starts_with(match, ignore.case = TRUE, vars = current_vars()): 列名以前綴開(kāi)始;
  • ends_with(match, ignore.case = TRUE, vars = current_vars()): 列名以后綴結(jié)束;
  • contains(match, ignore.case = TRUE, vars = current_vars()): 列名中包含指定字符串;
#選取變量名中包含etal的列  
select(iris, contains("etal")) 
  • matches(match, ignore.case = TRUE, vars = current_vars()): 列名匹配正則表達(dá)式;
#正則表達(dá)式匹配杠步,返回變量名中包含ta的列  
select(iris, matches(".ta."))  
  • num_range(prefix, range, width = NULL, vars = current_vars()): prefix
    接受一個(gè)前綴, range 接受數(shù)字序列;
  • one_of(…, vars = current_vars()): 列名包含在其中;
  • everything(vars = current_vars()): 所有的列名.
rename函數(shù)

這里需要注意的是, 我們使用 select 函數(shù)則在結(jié)果中只會(huì)保留選擇的列.
如果我們只是需要對(duì)特定列進(jìn)行重命名, 而需要保留原來(lái)其他的列, 則可以使用 rename 函數(shù).
iris %>% rename(sp.name = Species)
rename(iris,sp.name = Species)

篩選: filter() 和slice()函數(shù)

可以按給定的邏輯條件篩選出符合要求的子數(shù)據(jù)集;

  • filter()
#過(guò)濾出cyl == 8的行  
filter(mtcars, cyl == 8)  
filter(mtcars, cyl < 6)  
#過(guò)濾出cyl < 6 并且 vs == 1的行  
filter(mtcars, cyl < 6 & vs == 1)  
filter(mtcars, cyl < 6, vs == 1)  
#過(guò)濾出cyl < 6 或者 vs == 1的行  
filter(mtcars, cyl < 6 | vs == 1)  
#過(guò)濾出cyl 為4或6的行  
filter(mtcars, cyl %in% c(4, 6))  
  • slice()
    slice() 函數(shù)通過(guò)行號(hào)選取數(shù)據(jù)朵锣。
#選取第一行數(shù)據(jù)  
slice(mtcars, 1L)  
filter(mtcars, row_number() == 1L)  
#選取最后一行數(shù)據(jù)  
slice(mtcars, n())  
filter(mtcars, row_number() == n())  
#選取第5行到最后一行所有數(shù)據(jù)  
slice(mtcars, 5:n())  
filter(mtcars, between(row_number(), 5, n()))  
改變列值

mutate 函數(shù)會(huì)保留修改后的列和修改之前的列,
transmute 函數(shù)則會(huì)保留修改后的列而丟棄修改之前的列

  • 可以用于 mutate 和 transmute 函數(shù)還有許多輔助函數(shù):
    log(), log2(), log10(): 對(duì)值求 log;
    lead(), lag(): 返回序列中當(dāng)前位置前第幾個(gè)值或后第幾個(gè)值;
    row_number(): 結(jié)果等于 rank(ties.method = "first"), 即對(duì)于相同的數(shù)值的排名按照先后順序排;
    min_rank(): 結(jié)果等于 `rank(ties.method = "min"), 即對(duì)于相同的數(shù)值的排名都取最小的排名;
    dense_rank(): 結(jié)果類似于 min_rank(), 差別在于填充了由于 min_rank 造成的排名空隙;
    percent_rank(): 把 min_rank() 的值轉(zhuǎn)換為 0 到 1 區(qū)間;
    cume_dist(): 計(jì)算比當(dāng)前值還小的值的比例, 相當(dāng)于計(jì)算 density;
    ntile(): 把數(shù)據(jù)分成若干塊, 看每個(gè)數(shù)據(jù)在具體拿一個(gè)塊;
    cumsum(), cummean(), cummin(), cummax(), cumany(), cumall(): 累積地 (cumulative) 計(jì)算和 (sum), 均值 (mean), 最小值 (min), 最大值 (max), 任何為真 (any), 所有為真 (all);
    na_if(): 把特定地值轉(zhuǎn)換為 NA;
    coalesce(): 找出若干列中第一個(gè)不為 NA 的值;
    if_else(): 向量化的 ifelse 函數(shù)的效果.
    recode: 把一系列值轉(zhuǎn)換為其他值
    case_when: 多條件選擇
分割-應(yīng)用-整合

可以使用 group_by 和 summarize 函數(shù)來(lái)獲得iris每個(gè)物種的每一種屬性的均值

  • 眾多的函數(shù)可以用于 summarize 函數(shù).
    mean(), median(), max(), min(), sd(),
    IQR(), mad() 等統(tǒng)計(jì)函數(shù).
    first(), last(), nth(): 返回第幾位的值.
    n(): 計(jì)算數(shù)據(jù)的數(shù)量, 相當(dāng)于 length() 函數(shù).
    n_distinct(): 計(jì)算非重復(fù)數(shù)據(jù)的數(shù)量, 相當(dāng)于 length(unique(x)).
    any(), all(): 邏輯計(jì)算函數(shù)
排序

arrange 函數(shù)對(duì)數(shù)據(jù)進(jìn)行從小到大排序.
desc 函數(shù)可以實(shí)現(xiàn)從大到小排序

#以cyl和disp聯(lián)合升序排序
arrange(mtcars, cyl, disp)
#以disp降序排序
arrange(mtcars, desc(disp))
去重: distinct

distinct()用于對(duì)輸入的tbl進(jìn)行去重诚些,返回?zé)o重復(fù)的行

df <- data.frame(
  x = sample(10, 100, rep = TRUE),
  y = sample(10, 100, rep = TRUE)
)
#以全部?jī)蓚€(gè)變量去重皇型,返回去重后的行數(shù)
nrow(distinct(df))
nrow(distinct(df, x, y))
#以變量x去重诬烹,只返回去重后的x值
distinct(df, x)
#以變量y去重,只返回去重后的y值
distinct(df, y)
#以變量x去重幢痘,返回所有變量
distinct(df, x, .keep_all = TRUE)
#以變量y去重掀泳,返回所有變量
distinct(df, y, .keep_all = TRUE)
#對(duì)變量運(yùn)算后的結(jié)果去重
distinct(df, diff = abs(x - y))

待補(bǔ)充dplyr包后續(xù)學(xué)習(xí):R語(yǔ)言必學(xué)包之dplyr包

大佬新作dtplyr:當(dāng)優(yōu)秀的語(yǔ)法遇上牛批的速度

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市员舵,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌庄拇,老刑警劉巖韭邓,帶你破解...
    沈念sama閱讀 217,277評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異女淑,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)屈张,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門袱巨,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人愉老,你說(shuō)我怎么就攤上這事〖等耄” “怎么了?”我有些...
    開(kāi)封第一講書人閱讀 163,624評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵熬拒,是天一觀的道長(zhǎng)映九。 經(jīng)常有香客問(wèn)我,道長(zhǎng),這世上最難降的妖魔是什么哼拔? 我笑而不...
    開(kāi)封第一講書人閱讀 58,356評(píng)論 1 293
  • 正文 為了忘掉前任瓣颅,我火速辦了婚禮,結(jié)果婚禮上宫补,老公的妹妹穿的比我還像新娘。我一直安慰自己粉怕,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,402評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布秉犹。 她就那樣靜靜地躺著稚晚,像睡著了一般。 火紅的嫁衣襯著肌膚如雪客燕。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 51,292評(píng)論 1 301
  • 那天赏廓,我揣著相機(jī)與錄音还绘,去河邊找鬼栖袋。 笑死拍顷,一個(gè)胖子當(dāng)著我的面吹牛塘幅,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播电媳,決...
    沈念sama閱讀 40,135評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼匾乓,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起娱局,我...
    開(kāi)封第一講書人閱讀 38,992評(píng)論 0 275
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤衰齐,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后耻涛,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,429評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡澈蟆,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,636評(píng)論 3 334
  • 正文 我和宋清朗相戀三年卓研,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片鉴分。...
    茶點(diǎn)故事閱讀 39,785評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖橙垢,靈堂內(nèi)的尸體忽然破棺而出伦糯,到底是詐尸還是另有隱情柜某,我是刑警寧澤敛纲,帶...
    沈念sama閱讀 35,492評(píng)論 5 345
  • 正文 年R本政府宣布,位于F島的核電站翰绊,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏监嗜。R本人自食惡果不足惜抡谐,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,092評(píng)論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望麦撵。 院中可真熱鬧溃肪,春花似錦音五、人聲如沸乍惊。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,723評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)莉撇。三九已至,卻和暖如春棍郎,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背涂佃。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 32,858評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工蜈敢, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人抓狭。 一個(gè)月前我還...
    沈念sama閱讀 47,891評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像午笛,于是被迫代替她去往敵國(guó)和親苗桂。 傳聞我的和親對(duì)象是個(gè)殘疾皇子药磺,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,713評(píng)論 2 354