【R】vroom
2021年7月8日
1. はじめに
vroom
は、データファイルの読み書きを手軽に高速に行ってくれるパッケージです。
2. インストール
CRANからインストールできます。
install.packages("vroom")
3. つかってみる
このパッケージでは、データのデリミタやデータ型を推測してくれます。また、独自のデリミタを指定することもできます。
例えば、nycflights13
パッケージから作ったデータを読み込んでみます。
library(vroom)
vroom::vroom(“flights_9E.tsv”)
> vroom::vroom("flights_9E.tsv")
Rows: 18460 Columns: 19
-- Column specification -------------------------------------------------------------------------------------------------
Delimiter: "\t"
chr (3): tailnum, origin, dest
dbl (15): year, month, day, dep_time, sched_dep_time, dep_delay, arr_time, sched_arr_time, arr_delay, carrier, fligh...
dttm (1): time_hour
i<U+00A0>Use `spec()` to retrieve the full column specification for this data.
i<U+00A0>Specify the column types or set `show_col_types = FALSE` to quiet this message.
# A tibble: 18,460 x 19
year month day dep_time sched_dep_time dep_delay arr_time sched_arr_time arr_delay carrier flight tailnum origin
<dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <chr> <chr>
1 2013 1 1 810 810 0 1048 1037 11 9 3538 N915XJ JFK
2 2013 1 1 1451 1500 -9 1634 1636 -2 9 4105 N8444F JFK
3 2013 1 1 1452 1455 -3 1637 1639 -2 9 3295 N920XJ JFK
4 2013 1 1 1454 1500 -6 1635 1636 -1 9 3843 N8409N JFK
5 2013 1 1 1507 1515 -8 1651 1656 -5 9 3792 N8631E JFK
6 2013 1 1 1530 1530 0 1650 1655 -5 9 3369 N913XJ JFK
7 2013 1 1 1546 1540 6 1753 1748 5 9 3338 N904XJ JFK
8 2013 1 1 1550 1550 0 1844 1831 13 9 3372 N934XJ JFK
9 2013 1 1 1552 1600 -8 1749 1757 -8 9 3459 N910XJ JFK
10 2013 1 1 1554 1600 -6 1701 1734 -33 9 3331 N931XJ JFK
# ... with 18,450 more rows, and 6 more variables: dest <chr>, air_time <dbl>, distance <dbl>, hour <dbl>, minute <dbl>,
# time_hour <dttm>
複数のファイルを作って・・・・・
library(nycflights13) purrr::iwalk( split(flights, flights$carrier), ~ { .x$carrier[[1]]; vroom::vroom_write(.x, glue::glue("flights_{.y}.tsv"), delim = "\t") } )
読み込むこともできます。
files <- fs::dir_ls(glob = "flights*tsv") files room(files)
> vroom(files)
Rows: 336776 Columns: 19
-- Column specification -------------------------------------------------------------------------------------------------
Delimiter: "\t"
chr (4): carrier, tailnum, origin, dest
dbl (14): year, month, day, dep_time, sched_dep_time, dep_delay, arr_time, sched_arr_time, arr_delay, flight, air_ti...
dttm (1): time_hour
i<U+00A0>Use `spec()` to retrieve the full column specification for this data.
i<U+00A0>Specify the column types or set `show_col_types = FALSE` to quiet this message.
# A tibble: 336,776 x 19
year month day dep_time sched_dep_time dep_delay arr_time sched_arr_time arr_delay carrier flight tailnum origin
<dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <chr> <dbl> <chr> <chr>
1 2013 1 1 810 810 0 1048 1037 11 9E 3538 N915XJ JFK
2 2013 1 1 1451 1500 -9 1634 1636 -2 9E 4105 N8444F JFK
3 2013 1 1 1452 1455 -3 1637 1639 -2 9E 3295 N920XJ JFK
4 2013 1 1 1454 1500 -6 1635 1636 -1 9E 3843 N8409N JFK
5 2013 1 1 1507 1515 -8 1651 1656 -5 9E 3792 N8631E JFK
6 2013 1 1 1530 1530 0 1650 1655 -5 9E 3369 N913XJ JFK
7 2013 1 1 1546 1540 6 1753 1748 5 9E 3338 N904XJ JFK
8 2013 1 1 1550 1550 0 1844 1831 13 9E 3372 N934XJ JFK
9 2013 1 1 1552 1600 -8 1749 1757 -8 9E 3459 N910XJ JFK
10 2013 1 1 1554 1600 -6 1701 1734 -33 9E 3331 N931XJ JFK
# ... with 336,766 more rows, and 6 more variables: dest <chr>, air_time <dbl>, distance <dbl>, hour <dbl>,
# minute <dbl>, time_hour <dttm>
4. さいごに
データファイルの読み込みに苦労することがありますが、これを手軽に行ってくれると嬉しいですね。