如今,數(shù)據(jù)集有幾百甚至幾千個(gè)變量已經(jīng)司空見慣。這種情況下,如何找出真正感興趣的
那些變量經(jīng)常是我們面臨的第一個(gè)挑戰(zhàn)。通過(guò)基于變量名的操作, select() 函數(shù)可以讓你
快速生成一個(gè)有用的變量子集。
select() 函數(shù)對(duì)于航班數(shù)據(jù)不是特別有用,因?yàn)槠渲兄挥?19 個(gè)變量,但你還是可以通過(guò)
這個(gè)數(shù)據(jù)集了解一下 select() 函數(shù)的大致用法:
# 按名稱選擇列
select(flights, year, month, day)
#> # A tibble: 336,776 × 3
#> year month day
#> <int> <int> <int>
#> 1 2013 1 1
#> 2 2013 1 1
#> 3 2013 1 1
#> 4 2013 1 1
#> 5 2013 1 1
#> 6 2013 1 1
#> # ... with 3.368e+05 more rows
# 選擇“year”和“day”之間的所有列(包括“year”和“day”)
select(flights, year:day)
#> # A tibble: 336,776 × 3
#> year month day
#> <int> <int> <int>
#> 1 2013 1 1
#> 2 2013 1 1
#> 3 2013 1 1
#> 4 2013 1 1
#> 5 2013 1 1
#> 6 2013 1 1
#> # ... with 3.368e+05 more rows
# 選擇不在“year”和“day”之間的所有列(不包括“year”和“day”)
select(flights, -(year:day))
#> dep_time sched_dep_time dep_delay arr_time sched_arr_time
#> <int> <int> <dbl> <int> <int>
#> 1 517 515 2 830 819
#> 2 533 529 4 850 830
#> 3 542 540 2 923 850
#> 4 544 545 -1 1004 1022
#> 5 554 600 -6 812 837
#> 6 554 558 -4 740 728
#> # ... with 3.368e+05 more rows, and 12 more variables:
#> # arr_delay <dbl>, carrier <chr>, flight <int>,
#> # tailnum <chr>, origin <chr>, dest <chr>, air_time <dbl>,
#> # distance <dbl>, hour <dbl>, minute <dbl>,
#> # time_hour <dttm>
還可以在 select () 函數(shù)中使用一些輔助函數(shù)。
? starts_with("abc"):匹配以“abc”開頭的名稱。
? ends_with("xyz"):匹配以“xyz”結(jié)尾的名稱。
? contains("ijk"):匹配包含“ijk”的名稱。
? matches("(.)\\1"):選擇匹配正則表達(dá)式的那些變量。這個(gè)正則表達(dá)式會(huì)匹配名稱中有
重復(fù)字符的變量。
? num_range("x", 1:3):匹配 x1、 x2 和 x3。
使用 ?select 命令可以獲取更多信息。
select() 可以重命名變量,但我們很少這樣使用它,因?yàn)檫@樣會(huì)丟掉所有未明確提及的變
量。我們應(yīng)該使用 select() 函數(shù)的變體 rename() 函數(shù)來(lái)重命名變量,以保留所有未明確
提及的變量:
rename(flights, tail_num = tailnum)
#> # A tibble: 336,776 × 19
#> year month day dep_time sched_dep_time dep_delay
#> <int> <int> <int> <int> <int> <dbl>
#> 1 2013 1 1 517 515 2
#> 2 2013 1 1 533 529 4
#> 3 2013 1 1 542 540 2
#> 4 2013 1 1 544 545 -1
#> 5 2013 1 1 554 600 -6
#> 6 2013 1 1 554 558 -4
#> # ... with 3.368e+05 more rows, and 13 more variables:
#> # arr_time <int>, sched_arr_time <int>, arr_delay <dbl>,
#> # carrier <chr>, flight <int>, tail_num <chr>,
#> # origin <chr>, dest <chr>, air_time <dbl>,
#> # distance <dbl>, hour <dbl>, minute <dbl>,
#> # time_hour <dttm>
另一種用法是將 select() 函數(shù)和 everything() 輔助函數(shù)結(jié)合起來(lái)使用。當(dāng)想要將幾個(gè)變
量移到數(shù)據(jù)框開頭時(shí),這種用法非常奏效:
select(flights, time_hour, air_time, everything())
#> # A tibble: 336,776 × 19
#> time_hour air_time year month day dep_time
#> <dttm> <dbl> <int> <int> <int> <int>
#> # A tibble: 336,776 × 16








暫無(wú)數(shù)據(jù)