dplyr 1.0 更新內(nèi)容大概記錄

dplyr 1.0 更新內(nèi)容大概記錄

最前面的話

2020/5/31

image.png
image.png

<br />


# devtools::install_github("tidyverse/dplyr")
library(tidyverse)

## 2020/5/31
## 可以通過(guò)以下了
install.packages("dplyr")

<a name="24239833"></a>

這次更新了什么呢?

<br />見(jiàn)官方鏈接 dplyr 1.0.0 , emm牡直,就不一一列舉了,反正進(jìn)行了大規(guī)模的更新纳决。<br />這里列舉幾個(gè)驚艷的功能:<br />

  • across():可以使我們對(duì)數(shù)據(jù)列進(jìn)行相同批量處理碰逸,目的用來(lái)盡可能的取代 apply()、do() 等函數(shù)阔加。

dplyr 1.0.0: working across columns

  • relocate(): 更快捷的改變列的順序

dplyr 1.0.0: select, rename, relocate

  • rowwise: 傳統(tǒng)的 dplyr 中一般使針對(duì)列處理饵史,有了此函數(shù)后可以對(duì)數(shù)據(jù)進(jìn)行處理,比如對(duì)行求和胜榔、平均值胳喷,取代 rowsum() 等函數(shù),常常與 across() 函數(shù)連用夭织,吭露,能更好的能夠進(jìn)行批量處理。

rowwise

<a name="ca996b56"></a>

還是翻譯一下吧尊惰,更好的了解一下:

<a name="e670ab3b"></a>

Breaking changes

  • bind_cols():當(dāng)輸入文件格式為 data frame 格式時(shí)候奴饮,返回的是 data frame 格式纬向,而非 tibble 格式择浊。
  • bind_rows()戴卜、*_join()、summrise()琢岩、mutatte():有兩點(diǎn)主要的改變
    • 將因子和字符向量合并一起后不發(fā)出警告創(chuàng)造一個(gè)字符串向量投剥,之前合并的同時(shí)會(huì)發(fā)出警告
    • 將多個(gè)因子合并后創(chuàng)造一個(gè)組合水平因子,之前是創(chuàng)造一個(gè)字符串向量同時(shí)會(huì)發(fā)出警告
  • bind_rows() 和其他使用向量修復(fù)向量名担孔,詳細(xì)見(jiàn) ?vctrs::vec_as_names
  • all.equal.tbl_df() 被移除
    • data frame 江锨、tibbles、已分組的 data frame 數(shù)據(jù)即使數(shù)據(jù)一模一樣也不再相等
    • data frame 數(shù)據(jù)是否相等不再忽略行排序糕篇、分組
    • expect_equal() 使用內(nèi)置的 all.equal():比較 data frame 時(shí)候啄育,以前正確的現(xiàn)在可能會(huì)出錯(cuò)
  • distinct():去重復(fù),保持原始的列順序
  • distinct():缺失列時(shí)會(huì)增加報(bào)錯(cuò)拌消,一直以來(lái)之前是只警告挑豌!
  • group_modify():將分組變量列放置在最前面,類(lèi)似函數(shù)還有 group_map()墩崩、group_walk()氓英,詳情見(jiàn) ?group_modify()
  • n()、row_number():當(dāng)沒(méi)有加載 dplyr 包時(shí)候鹦筹,不能直接使用了铝阐,現(xiàn)在使用 dplyr::mutate(mtcars, x = n()) 會(huì)報(bào)錯(cuò),必須得 dplyr::mutate(mtcars, x = dplyr::n())
  • 不再支持 grouped_df() 舊數(shù)據(jù)格式铐拐,可能會(huì)影響我們將數(shù)據(jù)存入本地徘键,比如使用 knir 緩存或者使用 saveRDS()
  • lead()、lag() 函數(shù)的輸入文件更加嚴(yán)格
  • 拓展數(shù)據(jù)框需要首先添加一個(gè)或多個(gè)額外的類(lèi)遍蟋,而不是最后添加吹害。將額外的類(lèi)放在末尾會(huì)導(dǎo)致一些向量操作失敗,例如: Input must be a vector, not a<data.frame/...>object
  • right_join() 不再根據(jù) tibble y 中的參數(shù)按照 RHS 的順序?qū)Y(jié)果 tibble 的行進(jìn)行排序

<a name="4078e029"></a>

New features

  • cur_* 系列函數(shù) cur_data()匿值、cur_group()赠制、cur_group_id()、cur_group_rows()data.table() 函數(shù)中的 .SD挟憔、.GRP钟些、.BY、.I 啟發(fā)绊谭,能更方便的訪問(wèn)有關(guān) dplyr “當(dāng)前”組的信息政恍。
  • row_* 系列函數(shù) rows_insert()、rows_update()达传、rows_upsert()篙耗、rows_patch()迫筑、rows_delete() 提供一個(gè)新的 API 來(lái)插入和刪除來(lái)自第二個(gè)數(shù)據(jù)框或表的行。

Consider new row mutation functions

  • mutate()宗弯、summrise() :如果返回一個(gè)數(shù)據(jù)框脯燃,可以從單個(gè)表達(dá)式創(chuàng)建多個(gè)列

Automatically unpack unnamed df-cols

  • select()、rename() 使用最新的 tidyselect 接口蒙保;現(xiàn)在支持布爾邏輯運(yùn)算(例如:! & |)辕棚,可以結(jié)合 where() 函數(shù)按照類(lèi)型來(lái)進(jìn)行選擇列(比如:where(is.character)(upgrade select() to new tidyselect )[https://github.com/tidyverse/dplyr/issues/4680]),還可以用來(lái)修復(fù)具有重復(fù)的列名的數(shù)據(jù)邓厕。
  • slice() 增加了以下幾個(gè)子函數(shù):
    • slice_head()逝嚎、slice_tail():選擇第一列或者最后一列,類(lèi)似 head()tail()详恼,但是返回每一個(gè)組的行數(shù)
    • slice_sample():隨機(jī)選擇行补君,接替 sample_n()sample_frac()
    • slice_min()、slice_max():選擇最小值和最大值昧互,接替令人困惑的函數(shù) top_n()
  • summrise():增加參數(shù) .groups = 以便于更好的控制分組
  • relocate():增加的新函數(shù)挽铁,更方便的調(diào)整數(shù)據(jù)列順序

A dedicated verb to move columns within a table

  • rename_with():增加的新函數(shù),可以用函數(shù)來(lái)沖命名列名硅堆。

Need equivalent of scoped select/rename helpers

  • ungroup():可以選擇性的移除分組變量

Allow ungroup to specify removal of grouping variable

  • pull():現(xiàn)在可以通過(guò)指定一個(gè)額外的列名返回指定的向量

pull() can also return named vectors

<a name="59c5b601"></a>

Experimental features

  • mutate():僅適用于 data frame屿储,增加新參數(shù) .before.after 可以控制新增加的列的位置

Allow mutate() to choose the position of new columns

  • mutate():僅適用于 data frame, 增加了新參數(shù) .kepp 參數(shù)可以控制保持?jǐn)?shù)據(jù) .data 中哪些列,.kepp = "all" 默認(rèn); .keep = "none" 不保留輸入變量渐逃,類(lèi)似 tranmute() 函數(shù)够掠;.keep = "used" 僅保留用于創(chuàng)建新列的變量。

morph() to automatically remove columns "used up" by a mutate()

  • with_groups():方便臨時(shí)分組或者取消分組

Syntax for temporary grouping

<a name="960ea0eb"></a>

across()

  • across():新增函數(shù)茄菊;能夠在函數(shù) summrise()疯潭、mutate() 和其他將一個(gè)函數(shù)(或一組函數(shù))應(yīng)用于選定的列的函數(shù),詳情見(jiàn) vignette("colwise")
  • c_across():新增函數(shù)面殖;同 across() 函數(shù)竖哩,使得在行處理更加方便,比如:求每一行的平均值脊僚,見(jiàn) vignette("rowwise")相叁。

<a name="ccb4fdd8"></a>

rowwise()

  • rowwise():允許指定在以下情況下應(yīng)保留在輸出中的其他變量 summarising 。所有操作都會(huì)保留按行順序

Broadly consider do() and rowwise()

  • nest_by():它具有與 group_by()相同的接口辽幌,但會(huì)返回分組鍵的行數(shù)據(jù)框增淹,并以包含其余數(shù)據(jù)的數(shù)據(jù)框的列表列,即返回分組的列表乌企。

<a name="vctrs"></a>

vctrs

  • vctrs:向量幫助文檔虑润,詳情見(jiàn) ?vctrs。簡(jiǎn)單記錄兩點(diǎn):
    • 舍棄了兩個(gè)最重要的依賴(lài):RcppBH
    • 處理數(shù)據(jù)框 data frame 數(shù)據(jù)時(shí)候保留行名

<a name="Grouping"></a>

Grouping

  • group_by() 使用來(lái)自包 vctrs() 中的哈希算法
  • 已分組的數(shù)據(jù)框現(xiàn)在可以通過(guò) names<-加酵、[[<-拳喻、 [<- 哭当、$<- 來(lái)重新生成底層分組。
  • .grouped_df():重新分組

[Add method for grouped_df

  • mutate()冗澈、summarise() 現(xiàn)在可以調(diào)整分組變量

mutate() should allow modification of grouping variables

  • group_modify() 新增了額外的參數(shù)

Can't pass additional arguments to group_modify() function

  • group_by():當(dāng)按 drop = TRUE 的因子分組時(shí)钦勘,不創(chuàng)建任意的 NA 組

False positive implicit NA warning with factors and 0-row slices

<a name="ba5a9bcd"></a>

Lifecycle changes

  • 不推薦使用 lifecycle
    • 也就是說(shuō),默認(rèn)情況下渗柿,每個(gè)會(huì)話只會(huì)看到一次棄用警告个盆, 您可以使用 options(lifecycle_verbosity = x) 進(jìn)行控制,其中 x 是 NULL, "quiet", "warning", and "error" 之一朵栖。

<a name="Removed"></a>

Removed

  • id() 函數(shù)
  • failwith() 函數(shù)
  • tbl_cube() 函數(shù)
  • rbind_all() 函數(shù)
  • rbind_list() 函數(shù)
  • dr_dplyr() 函數(shù)

<a name="Deprecated"></a>

Deprecated

  • add_count() 函數(shù)中的 drop 參數(shù)
  • add_rownames 函數(shù)已經(jīng)被 tibble::rownames_to_column() 取代
  • as.tbl() 和 tbl_df() 函數(shù)已經(jīng)被 as_tibble() 取代
  • bench_tbls()、compare_tbls()柴梆、compare_tbls2()陨溅、eval_tbls() and eval_tbls2() 函數(shù)已棄用
  • combine() 函數(shù)已經(jīng)被 vctrs::vec_c() 取代
  • funs() 函數(shù)已經(jīng)被 list() 取代
  • group_by(add = ) 已經(jīng)被 group_by(.add = ) 取代
  • group_by(.dots = )/group_by_prepare(.dots = ) 已經(jīng)被 !!! 取代

group_by(.dots) handling - breaking change?

  • location() 和 changes() 函數(shù)已被 lobstr::ref() 取代
  • src_loacl 函數(shù)已棄用
  • src_mysql()、 src_postgres()绍在、src_sqlite() 函數(shù)已棄用
    • 推薦使用 dbplyr 包:dbplyr门扇,自動(dòng)將數(shù)據(jù)轉(zhuǎn)變?yōu)?SQL

<a name="Superseded"></a>

Superseded

  • _if _at _all 等系列變體函數(shù)已經(jīng)被 across() 函數(shù)取代。

Mark scoped helpers as superseded

  • rename_*()偿渡、select_*() 已經(jīng)被 rename_with() 取代
  • do()summarise() 取代
  • top_n()slice_min() 和 slice_max() 取代

top_n(df, n) returns bottom n rows

<a name="Questioning"></a>

Questioning

  • all_equal() 解決了一個(gè)似乎不再重要的問(wèn)題

<a name="Stable"></a>

Stable

  • rowwise() is no longer questioning.

<a name="7dfebbeb"></a>

Documentation improvements

  • vignette("base) 簡(jiǎn)述了 dplyrbase R 的異同

[https://cran.r-project.org/web/packages/dplyr/vignettes/base.html](dplyr <-> base R)

  • vignette("grouping") 介紹了當(dāng)應(yīng)用于分組數(shù)據(jù)時(shí)候臼寄,dplyr 怎么變化的。

Grouped data

  • vignette("programming")已經(jīng)完全重寫(xiě)溜宽,以反映最新的詞匯表吉拳、最新的 rlang 特性和當(dāng)前的建議。現(xiàn)在用 dplyr 編程應(yīng)該會(huì)簡(jiǎn)單很多适揉。

Programming with dplyr

  • 更多關(guān)于 dplyr 的幫助說(shuō)明書(shū)見(jiàn) dplyr/vignettes<br />

<a name="10cfcd06"></a>

Minor improvements and bug fixes

  • ?dplyr_extending
  • dplyr 不再提供 all.equal.tbl_df() 方法留攒。
  • coalesce()

df_patch (via coalesce) is too picky about types

  • distinct() 在處理不存在的變量時(shí)候會(huì)報(bào)錯(cuò),之前是警告
  • filter()嫉嘀、mutate()炼邀、summarise() 提供了更詳細(xì)的報(bào)錯(cuò)信息
  • 當(dāng)所有列均為邏輯向量時(shí),filter() 處理數(shù)據(jù)框結(jié)果通過(guò)用 減少它們剪侮。意味著我們可以結(jié)合 acrossfilter() 函數(shù)

filter() and data frame results, filter(across())

  • left_join()拭宁、right_join()、full_join() 增加了新參數(shù) kepp 瓣俯,可以選擇保留這兩組連接鍵杰标。當(dāng)我們想要確定哪一行在每一個(gè)數(shù)據(jù)丟失時(shí)非常有用。

outer joins don't keep join columns from both sides

  • *join() 函數(shù)增加了 by = character() 來(lái)進(jìn)行數(shù)據(jù)合并

[https://github.com/tidyverse/dplyr/issues/4206](Problems writing cross-join in dplyr)

  • group_by(..., .add = TRUE) 取代了 group_by(..., add = TRUE)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末降铸,一起剝皮案震驚了整個(gè)濱河市在旱,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌推掸,老刑警劉巖桶蝎,帶你破解...
    沈念sama閱讀 206,013評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件驻仅,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡登渣,警方通過(guò)查閱死者的電腦和手機(jī)噪服,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,205評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)胜茧,“玉大人粘优,你說(shuō)我怎么就攤上這事∩胪纾” “怎么了雹顺?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,370評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)廊遍。 經(jīng)常有香客問(wèn)我嬉愧,道長(zhǎng),這世上最難降的妖魔是什么喉前? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,168評(píng)論 1 278
  • 正文 為了忘掉前任没酣,我火速辦了婚禮,結(jié)果婚禮上卵迂,老公的妹妹穿的比我還像新娘裕便。我一直安慰自己,他們只是感情好见咒,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,153評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布偿衰。 她就那樣靜靜地躺著,像睡著了一般论颅。 火紅的嫁衣襯著肌膚如雪哎垦。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 48,954評(píng)論 1 283
  • 那天恃疯,我揣著相機(jī)與錄音漏设,去河邊找鬼。 笑死今妄,一個(gè)胖子當(dāng)著我的面吹牛郑口,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播盾鳞,決...
    沈念sama閱讀 38,271評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼犬性,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了腾仅?” 一聲冷哼從身側(cè)響起乒裆,我...
    開(kāi)封第一講書(shū)人閱讀 36,916評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎推励,沒(méi)想到半個(gè)月后鹤耍,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體肉迫,經(jīng)...
    沈念sama閱讀 43,382評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,877評(píng)論 2 323
  • 正文 我和宋清朗相戀三年稿黄,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了喊衫。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 37,989評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡杆怕,死狀恐怖族购,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情陵珍,我是刑警寧澤寝杖,帶...
    沈念sama閱讀 33,624評(píng)論 4 322
  • 正文 年R本政府宣布,位于F島的核電站撑教,受9級(jí)特大地震影響朝墩,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜伟姐,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,209評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望亿卤。 院中可真熱鬧愤兵,春花似錦、人聲如沸排吴。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,199評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)钻哩。三九已至屹堰,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間街氢,已是汗流浹背扯键。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,418評(píng)論 1 260
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留珊肃,地道東北人荣刑。 一個(gè)月前我還...
    沈念sama閱讀 45,401評(píng)論 2 352
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像伦乔,于是被迫代替她去往敵國(guó)和親厉亏。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,700評(píng)論 2 345