Tidyverse | tibyr

自用模板舵盈,隨緣更新

cheat sheet

image.png

image.png

Reshape Date

  • 比reshape 好用

pivot_longer()

  • 寬變長
# Simplest case where column names are character data
relig_income
#> # A tibble: 18 × 11
#>    religion      `<$10k` `$10-20k` `$20-30k` `$30-40k` `$40-50k` `$50-75k`
#>    <chr>           <dbl>     <dbl>     <dbl>     <dbl>     <dbl>     <dbl>
#>  1 Agnostic           27        34        60        81        76       137
#>  2 Atheist            12        27        37        52        35        70
#>  3 Buddhist           27        21        30        34        33        58
#>  4 Catholic          418       617       732       670       638      1116
#>  5 Don’t know/r…      15        14        15        11        10        35
#>  6 Evangelical …     575       869      1064       982       881      1486
#>  7 Hindu               1         9         7         9        11        34
#>  8 Historically…     228       244       236       238       197       223
#>  9 Jehovah's Wi…      20        27        24        24        21        30
#> 10 Jewish             19        19        25        25        30        95
#> 11 Mainline Prot     289       495       619       655       651      1107
#> 12 Mormon             29        40        48        51        56       112
#> 13 Muslim              6         7         9        10         9        23
#> 14 Orthodox           13        17        23        32        32        47
#> 15 Other Christ…       9         7        11        13        13        14
#> 16 Other Faiths       20        33        40        46        49        63
#> 17 Other World …       5         2         3         4         2         7
#> 18 Unaffiliated      217       299       374       365       341       528
#> # … with 4 more variables: `$75-100k` <dbl>, `$100-150k` <dbl>,
#> #   `>150k` <dbl>, `Don't know/refused` <dbl>
relig_income %>%
  pivot_longer(!religion, names_to = "income", values_to = "count")
#> # A tibble: 180 × 3
#>    religion income             count
#>    <chr>    <chr>              <dbl>
#>  1 Agnostic <$10k                 27
#>  2 Agnostic $10-20k               34
#>  3 Agnostic $20-30k               60
#>  4 Agnostic $30-40k               81
#>  5 Agnostic $40-50k               76
#>  6 Agnostic $50-75k              137
#>  7 Agnostic $75-100k             122
#>  8 Agnostic $100-150k            109
#>  9 Agnostic >150k                 84
#> 10 Agnostic Don't know/refused    96
#> # … with 170 more row

pivot_wider()

  • 長變寬

Split Cell

unite()

sepatate()

  • 可以自定義劃分一列的分隔符sep = "\"
  • 命名劃分出的列名into = c("", "")

sepatate_row()

  • 將分割出來的數(shù)據(jù)以長數(shù)據(jù)的形式呈現(xiàn)

Nested Data Frame

Definition

Nesting uses alternative representation of grouped data where a group becomes a single row containing a nested data frame. See vignette("nest") for more details and examples.

  • 就是將list 放入一個cell 中,形成表格中表格
df <- tibble(x = c(1, 1, 1, 2, 2, 3), y = 1:6, z = 6:1)
# Note that we get one row of output for each unique combination of
# non-nested variables
df %>% nest(data = c(y, z))
#> # A tibble: 3 × 2
#>       x data            
#>   <dbl> <list>          
#> 1     1 <tibble [3 × 2]>
#> 2     2 <tibble [2 × 2]>
#> 3     3 <tibble [1 × 2]>

Expand Date Frame

extract()

  • 可以使用正則表達式
  • 通過指定展開列名的數(shù)目來確定展開的個數(shù)
df <- data.frame(x = c(NA, "a-b", "a-d", "b-c", "d-e"))
df %>% extract(x, "A")
#>      A
#> 1 <NA>
#> 2    a
#> 3    a
#> 4    b
#> 5    d
df %>% extract(x, c("A", "B"), "([[:alnum:]]+)-([[:alnum:]]+)")
#>      A    B
#> 1 <NA> <NA>
#> 2    a    b
#> 3    a    d
#> 4    b    c
#> 5    d    e

# If no match, NA:
df %>% extract(x, c("A", "B"), "([a-d]+)-([a-d]+)")
#>      A    B
#> 1 <NA> <NA>
#> 2    a    b
#> 3    a    d
#> 4    b    c
#> 5 <NA> <NA>

如果想要按照前綴展開的話,可以考慮使用paste()函數(shù)
eg:paste("prefix", -100:99, sep = "-")

unnest

unnest_longer()
  • 拆成一行
unnest_wider()
  • 根據(jù)element 的數(shù)目劃分colunms 的數(shù)目
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末恳邀,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子浪慌,更是在濱河造成了極大的恐慌笼恰,老刑警劉巖踊沸,帶你破解...
    沈念sama閱讀 216,324評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異社证,居然都是意外死亡逼龟,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,356評論 3 392
  • 文/潘曉璐 我一進店門追葡,熙熙樓的掌柜王于貴愁眉苦臉地迎上來腺律,“玉大人,你說我怎么就攤上這事宜肉≡染” “怎么了?”我有些...
    開封第一講書人閱讀 162,328評論 0 353
  • 文/不壞的土叔 我叫張陵谬返,是天一觀的道長之斯。 經(jīng)常有香客問我,道長遣铝,這世上最難降的妖魔是什么佑刷? 我笑而不...
    開封第一講書人閱讀 58,147評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮酿炸,結(jié)果婚禮上瘫絮,老公的妹妹穿的比我還像新娘。我一直安慰自己填硕,他們只是感情好檀何,可當我...
    茶點故事閱讀 67,160評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著廷支,像睡著了一般。 火紅的嫁衣襯著肌膚如雪栓辜。 梳的紋絲不亂的頭發(fā)上恋拍,一...
    開封第一講書人閱讀 51,115評論 1 296
  • 那天,我揣著相機與錄音藕甩,去河邊找鬼施敢。 笑死周荐,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的僵娃。 我是一名探鬼主播概作,決...
    沈念sama閱讀 40,025評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼默怨!你這毒婦竟也來了讯榕?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,867評論 0 274
  • 序言:老撾萬榮一對情侶失蹤匙睹,失蹤者是張志新(化名)和其女友劉穎愚屁,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體痕檬,經(jīng)...
    沈念sama閱讀 45,307評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡霎槐,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,528評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了梦谜。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片丘跌。...
    茶點故事閱讀 39,688評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖唁桩,靈堂內(nèi)的尸體忽然破棺而出闭树,到底是詐尸還是另有隱情,我是刑警寧澤朵夏,帶...
    沈念sama閱讀 35,409評論 5 343
  • 正文 年R本政府宣布蔼啦,位于F島的核電站,受9級特大地震影響仰猖,放射性物質(zhì)發(fā)生泄漏捏肢。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,001評論 3 325
  • 文/蒙蒙 一饥侵、第九天 我趴在偏房一處隱蔽的房頂上張望鸵赫。 院中可真熱鬧,春花似錦躏升、人聲如沸辩棒。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,657評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽一睁。三九已至,卻和暖如春佃却,著一層夾襖步出監(jiān)牢的瞬間者吁,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,811評論 1 268
  • 我被黑心中介騙來泰國打工饲帅, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留复凳,地道東北人瘤泪。 一個月前我還...
    沈念sama閱讀 47,685評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像育八,于是被迫代替她去往敵國和親对途。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,573評論 2 353

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