【R】vroom

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. さいごに

データファイルの読み込みに苦労することがありますが、これを手軽に行ってくれると嬉しいですね。

Add a Comment

メールアドレスが公開されることはありません。