Читать книгу R für Data Science - Hadley Wickham - Страница 59

Spalten mit select() auswählen

Оглавление

Es ist nicht ungewöhnlich, Datensets mit Hunderten oder sogar Tausenden von Variablen zu bekommen. In diesem Fall besteht die erste Herausforderung oftmals darin, das Datenset auf die Variablen einzuengen, an denen Sie tatsächlich interessiert sind. Mit der Funktion select() können Sie den Umfang der Daten schnell auf eine zweckmäßige Teilmenge reduzieren. Dabei verwenden Sie Operationen, die auf den Namen der Variablen basieren.

Die Funktion select() ist für die Flugdaten nicht ganz so nützlich, weil wir hier lediglich 19 Variablen haben, das Prinzip ist aber dennoch zu erkennen:

# Select columns by name

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

# Select all columns between year and day (inclusive)

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

# Select all columns except those from year to day (inclusive)

select(flights, -(year:day))

#> # A tibble: 336,776 × 16

#> 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>

Es gibt eine Reihe von Hilfsfunktionen, die Sie innerhalb von select() verwenden können:

 starts_with("abc") sucht nach Namen, die mit »abc« beginnen.

 ends_with("xyz") sucht nach Namen, die auf »xyz« enden.

 contains("ijk") sucht nach Namen, die »ijk« enthalten.

 matches("(.)\\1") wählt Variablen aus, die einem regulären Ausdruck entsprechen, im angegebenen Beispiel allen Variablen, die sich wiederholende Zeichen enthalten. Mehr über reguläre Ausdrücke lernen Sie in Kapitel 11.

 num_range("x", 1:3) sucht nach x1, x2 und x3.

Mit ?select zeigen Sie weitere Details an.

Die Funktion select() können Sie auch verwenden, um Variablen umzubenennen. Das ist allerdings kaum sinnvoll, weil dann alle Variablen verschwinden, die nicht explizit erwähnt sind. Nehmen Sie stattdessen rename(), eine Variante von select(), die alle nicht explizit aufgeführten Variablen beibehält:

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>

Eine andere Möglichkeit ist es, select() in Verbindung mit der Hilfsfunktion everything() zu verwenden. Das ist praktisch, wenn Sie eine Handvoll Variablen haben, die Sie an den Beginn des Dataframes verschieben möchten:

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>

#> 1 2013-01-01 05:00:00 227 2013 1 1 517

#> 2 2013-01-01 05:00:00 227 2013 1 1 533

#> 3 2013-01-01 05:00:00 160 2013 1 1 542

#> 4 2013-01-01 05:00:00 183 2013 1 1 544

#> 5 2013-01-01 06:00:00 116 2013 1 1 554

#> 6 2013-01-01 05:00:00 150 2013 1 1 554

#> # ... with 3.368e+05 more rows, and 13 more variables:

#> # sched_dep_time <int>, dep_delay <dbl>, arr_time <int>,

#> # sched_arr_time <int>, arr_delay <dbl>, carrier <chr>,

#> # flight <int>, tailnum <chr>, origin <chr>, dest <chr>,

#> # distance <dbl>, hour <dbl>, minute <dbl>

R für Data Science

Подняться наверх