3章 dplyrによるデータ変換
3.0 ライブラリーの読み込み
library("tidyverse")
library("nycflights13")
library("gridExtra")3.1 はじめに
3.2 filter()で行にフィルタをかける
filter()で行にフィルタをかける練習問題1.1 : 到着が2時間以上遅れた
flights %>%
filter(., arr_delay >= 120)
# A tibble: 10,200 x 19
year month day dep_time sched_dep_time dep_delay arr_time sched_arr_time arr_delay carrier
<int> <int> <int> <int> <int> <dbl> <int> <int> <dbl> <chr>
1 2013 1 1 811 630 101 1047 830 137 MQ
2 2013 1 1 848 1835 853 1001 1950 851 MQ
3 2013 1 1 957 733 144 1056 853 123 UA
4 2013 1 1 1114 900 134 1447 1222 145 UA
5 2013 1 1 1505 1310 115 1638 1431 127 EV
6 2013 1 1 1525 1340 105 1831 1626 125 B6
7 2013 1 1 1549 1445 64 1912 1656 136 EV
8 2013 1 1 1558 1359 119 1718 1515 123 EV
9 2013 1 1 1732 1630 62 2028 1825 123 EV
10 2013 1 1 1803 1620 103 2008 1750 138 MQ
# … with 10,190 more rows, and 9 more variables: flight <int>, tailnum <chr>, origin <chr>,
# dest <chr>, air_time <dbl>, distance <dbl>, hour <dbl>, minute <dbl>, time_hour <dttm>練習問題1.2 : ヒューストンへのフライト
練習問題1.3 : United, American, deltaのフライト
練習問題1.4 : 夏期(7~9月)のフライト
練習問題1.5 : 到着が2時間遅れたが、出発が遅れなかったフライト
練習問題1.6 : 遅延は少なくとも1時間を超えたが、運行で30分以上取り返したフライト
練習問題1.7 : 深夜0時〜午前6時までのフライト
練習問題2 : between()を使って、先程の問題を簡略化しなさい。
between()を使って、先程の問題を簡略化しなさい。練習問題3 : dep_timeが欠損値のフライトはいくつあるか。
dep_timeが欠損値のフライトはいくつあるか。練習問題4 : NA^0はなぜ欠損値にならないのか。
NA^0はなぜ欠損値にならないのか。3.3 arrange()で行を配置する
arrange()で行を配置する練習問題1 : 欠損値を頭から並べるためにはarrange()をどう使えばよいか。
arrange()をどう使えばよいか。練習問題2 : flightsを並べて、遅延が最も大きなフライト、最も早朝に飛んだフライトを探す。
flightsを並べて、遅延が最も大きなフライト、最も早朝に飛んだフライトを探す。練習問題3 : flightsを並べて、最速のフライトを探す
flightsを並べて、最速のフライトを探す練習問題4 : flightsを並べて、最長距離のフライトを探す
flightsを並べて、最長距離のフライトを探す3.4 select()で列を選ぶ
select()で列を選ぶ練習問題1 : flightsからdep_time, dep_delay, arr_time, arr_delayを選ぶ方法をたくさん探しなさい。
flightsからdep_time, dep_delay, arr_time, arr_delayを選ぶ方法をたくさん探しなさい。練習問題2 : select()において、変数名を繰り返すとどうなるのか。
select()において、変数名を繰り返すとどうなるのか。練習問題3 : one_of()は何をするのか。次のベクトルと一緒に使うとなぜ便利なのか。
one_of()は何をするのか。次のベクトルと一緒に使うとなぜ便利なのか。練習問題4 : 次のコードの実行結果は驚くものだが、select()のヘルパー関数は、デフォルトで大文字、小文字をどう扱うのか。
select()のヘルパー関数は、デフォルトで大文字、小文字をどう扱うのか。3.5 mutate()で新しい変数を追加する
mutate()で新しい変数を追加する練習問題1 : dep_time, sched_dep_timeを、深夜0時以降の分数のより便利な表現に変換しなさい。
dep_time, sched_dep_timeを、深夜0時以降の分数のより便利な表現に変換しなさい。練習問題2 : air_timeをarr_time - dep_timeと比べなさい。
air_timeをarr_time - dep_timeと比べなさい。練習問題3 : dep_time, sched_dep_time, dep_delayを比べなさい。
dep_time, sched_dep_time, dep_delayを比べなさい。練習問題4 : 遅延が大きいフライトのランク付けしなさい。
練習問題5 : 1:3 + 1:10は何を返すか。
1:3 + 1:10は何を返すか。練習問題6 : Rには、どのような三角関数が用意されているのか。

3.6 summarise()によるグループごとの要約
summarise()によるグループごとの要約練習問題1 : フライトのグループの典型的な遅延特性を評価しなさい。どれが重要でしょうか。
練習問題2 : count()を使わずにnot_cancelled %>% count(dest)とnot_cancelled %>% count(tailnum, wt = distance)の同じ出力が得られる別の方法を考えなさい。
count()を使わずにnot_cancelled %>% count(dest)とnot_cancelled %>% count(tailnum, wt = distance)の同じ出力が得られる別の方法を考えなさい。練習問題3 : キャンセル便の定義として(is.na(dep_delay) | is.na(arr_delay))は、最適ではありません。どうしてでしょうか?
(is.na(dep_delay) | is.na(arr_delay))は、最適ではありません。どうしてでしょうか?練習問題4 : 日毎のキャンセル便数をカウントしなさい。なにかパターンはあるのか。ここでのキャンセルの定義は(is.na(arr_delay) | is.na(dep_delay))です。また、キャンセルされたフライトの割合は平均遅延に関連していますか?
(is.na(arr_delay) | is.na(dep_delay))です。また、キャンセルされたフライトの割合は平均遅延に関連していますか?

練習問題5 : 遅延に関して、どの航空会社が最悪か。
練習問題6 : 飛行機ごとに、最初の1時間以上遅延する前の飛行回数をカウントしなさい。
練習問題7 : sort引数はカウントに何をするのか。
3.7 グループごとの変更
練習問題1 : mutate(or filter)のグループ処理時の違いを教えてください。
mutate(or filter)のグループ処理時の違いを教えてください。練習問題2 : どの飛行機(tailnum)が定時着陸記録に関して最悪なのか。
tailnum)が定時着陸記録に関して最悪なのか。練習問題3 : 遅延を避けるためには、どの時間帯がよいか。
練習問題4 : 目的地ごとに総遅延時間を分単位で計算しなさい。
練習問題5 : 遅延が発生した際に、次の便へのどの程度、影響するのか、lag()を使って調べなさい。
lag()を使って調べなさい。
練習問題6 : データが誤って入力されたサンプルを探しなさい。
練習問題7 : 少なくとも2つの航空会社が、運行している目的地を探しなさい。そして、この情報をもとに航空会社をランクしなさい。
最終更新