パッケージの読み込み

Q5-1

まず、データをダウンロードする。

ダウンロードしたデータを読み込み、df_a という名前のデータフレームを作る。

Q5-1-1

データの中身をいくつかの方法で確認する。まず、データフレームに含まれる変数の名前を確認する。

## [1] "country" "year"    "x"       "y"

このデータフレームには表示された四つの変数があることが分かる。

次に、データの行数(標本サイズ; 観測数)を確認する。

## [1] 126

行数が126 であることがわかる。先ほど確認した変数の数と合わせると、df_aは、126行 \(\times\) 4列のデータフレームであることが分かる。これは、

## [1] 126   4

で確かめられる。また、RStudio の Environmentタブにも、この情報は表示されている。

head()tail()を使って、データの中身を見てみよう。

## # A tibble: 6 x 4
##   country  year     x     y
##   <chr>   <int> <dbl> <dbl>
## 1 China    1990 4792. 6186.
## 2 China    1991 4475. 5504.
## 3 China    1992 5111. 5307.
## 4 China    1993 4861. 4423.
## 5 China    1994 4879. 4609.
## 6 China    1995 4599. 4847.

最初の6行はChinaの1990年から1995年のデータであり、x とy には数値(小数, dbl [double])が入っていることが分かる。

同様にデータの末尾を確認してみよう。引数 nで表示する行数を指定できる。

## # A tibble: 9 x 4
##   country  year     x      y
##   <chr>   <int> <dbl>  <dbl>
## 1 USA      2002 6154.  4604.
## 2 USA      2003 4350.  6696.
## 3 USA      2004 4724.  4438.
## 4 USA      2005 5281.  8854.
## 5 USA      2006 5780.  4566.
## 6 USA      2007 5603. 10026.
## 7 USA      2008 5707.  7909.
## 8 USA      2009 5843.  7232.
## 9 USA      2010 5245.  6391.

最後の9行はUSAのデータであることが分かる。

最後に、dplyr::glimpse() を使ってデータの中身を確認してみよう(dplyrパッケージは tidyverse に含まれている)。

## Observations: 126
## Variables: 4
## $ country <chr> "China", "China", "China", "China", "China", "China", ...
## $ year    <int> 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, ...
## $ x       <dbl> 4792.126, 4474.876, 5110.904, 4861.371, 4879.151, 4598...
## $ y       <dbl> 6185.759, 5504.153, 5307.269, 4423.372, 4609.255, 4846...

観測数、変数の数が表示され、それぞれの変数の型(chr [文字列], int [整数], dbl [小数])と、各変数の先頭部分が表示されており、ここまで確認してきた情報を一気に把握することができる。

Q5-1-2

縦長データであるdf_aから変数をyを除外して、横長データに変換する。

横長になったかどうか確認する。

## # A tibble: 7 x 7
##    year China France Germany Japan    UK   USA
##   <int> <dbl>  <dbl>   <dbl> <dbl> <dbl> <dbl>
## 1  1990 4792.  5058.   5124. 4941. 4148. 4968.
## 2  1991 4475.  4615.   4816. 5503. 4929. 5114.
## 3  1992 5111.  5779.   4975. 5036. 5460. 4762.
## 4  1993 4861.  5080.   4933. 4409. 5441. 4464.
## 5  1994 4879.  4844.   5287. 5678. 4817. 4809.
## 6  1995 4599.  4646.   5655. 5221. 6134. 3961.
## 7  1996 5117.  4621.   4094. 4808. 4626. 4672.

Q5-1-3

上で作った横長データwide を縦長データに変換する。

縦長になったかどうか確認する。

## # A tibble: 10 x 3
##     year country     x
##    <int> <chr>   <dbl>
##  1  1990 China   4792.
##  2  1991 China   4475.
##  3  1992 China   5111.
##  4  1993 China   4861.
##  5  1994 China   4879.
##  6  1995 China   4599.
##  7  1996 China   5117.
##  8  1997 China   4411.
##  9  1998 China   5818.
## 10  1999 China   5649.
## # A tibble: 10 x 3
##     year country     x
##    <int> <chr>   <dbl>
##  1  2001 USA     4774.
##  2  2002 USA     6154.
##  3  2003 USA     4350.
##  4  2004 USA     4724.
##  5  2005 USA     5281.
##  6  2006 USA     5780.
##  7  2007 USA     5603.
##  8  2008 USA     5707.
##  9  2009 USA     5843.
## 10  2010 USA     5245.

Q5-2

表計算ソフトでのデータの入力は省略する。代わりに、表5.6の内容をもつCSVファイルをRで作る。

上で定義したtbl5_6をそのまま使ってもよいが、練習のためにrm() で一旦データフレームを消去しよう。

上での保存したcsvファイルを改めて読み込み、df2という名前のデータフレームを作ろう。

データの中身を確認する。

## Observations: 10
## Variables: 4
## $ name   <chr> "Amy", "Ben", "Chris", "Daisy", "Emily", "Fin", "Gary",...
## $ female <int> 1, 0, 0, 1, 1, 0, 0, 1, 0, 1
## $ height <int> 168, 180, 172, 165, 175, 192, 165, 170, 176, 168
## $ weight <int> 55, 77, 90, 60, 67, 84, 57, 62, 70, 62

先ほど作ったデータが正しく読み込めたことが確認できる。

女性のみを含むデータフレームを作り、身長が低い順(昇順)に並べ替える。

## # A tibble: 5 x 4
##   name   female height weight
##   <chr>   <int>  <int>  <int>
## 1 Daisy       1    165     60
## 2 Amy         1    168     55
## 3 Jenny       1    168     62
## 4 Hilary      1    170     62
## 5 Emily       1    175     67

男性のみを含むデータフレームを作り、体重が重い順(降順; descending order)に並べ替える。

## # A tibble: 5 x 4
##   name  female height weight
##   <chr>  <int>  <int>  <int>
## 1 Chris      0    172     90
## 2 Fin        0    192     84
## 3 Ben        0    180     77
## 4 Isaac      0    176     70
## 5 Gary       0    165     57

Q5-3

三つのデータセットをダウンロードし、dataディレクトリに保存する。

ダウンロードした三つのCSVファイルを読み込み、それぞれdf_b、df_c、df_d という名前のデータフレームにする。

それぞれのデータの中身を確認する。

## Observations: 3
## Variables: 3
## $ country   <chr> "China", "US", "Japan"
## $ democracy <int> 0, 1, 1
## $ asia      <int> 1, 0, 1

df_bは3行3列のデータフレームで、文字列型の変数が一つ、整数型の変数が二つある。

## Observations: 2
## Variables: 3
## $ country   <chr> "UK", "Germany"
## $ asia      <int> 1, 0
## $ democracy <int> 1, 1

df_cは2行3列のデータフレームで、文字列型の変数が一つ、整数型の変数が二つある。 df_bと同じ変数が含まれているが、保存されている順番が異なる。

## Observations: 4
## Variables: 2
## $ country <chr> "Germany", "US", "Japan", "Brazil"
## $ federal <int> 1, 1, 0, 1

df_d は4行2列のデータフレームで、文字列型の変数と整数型の変数が一つずつある。

Q5-3-1

df_bとdf_cに含まれる変数はまったく同じで、観測対象が異なるので、データフレームを縦に結合する。

## # A tibble: 5 x 3
##   country democracy  asia
##   <chr>       <int> <int>
## 1 China           0     1
## 2 US              1     0
## 3 Japan           1     1
## 4 UK              1     1
## 5 Germany         1     0

Q5-3-2

df_d とdf_e は異なる変数を持っているので、横に結合する。その際、両者に含まれる国名 (country) が一致する行同士を結合する。df_dに含まれる国だけを残す。

## # A tibble: 4 x 4
##   country federal democracy  asia
##   <chr>     <int>     <int> <int>
## 1 Germany       1         1     0
## 2 US            1         1     0
## 3 Japan         0         1     1
## 4 Brazil        1        NA    NA

Q5-3-3

df_d とdf_e は異なる変数を持っているので、横に結合する。その際、両者に含まれる国名 (country) が一致する行同士を結合する。df_eに含まれる国だけを残す。

## # A tibble: 5 x 4
##   country federal democracy  asia
##   <chr>     <int>     <int> <int>
## 1 China        NA         0     1
## 2 US            1         1     0
## 3 Japan         0         1     1
## 4 UK           NA         1     1
## 5 Germany       1         1     0

Q5-3-4

df_d とdf_e は異なる変数を持っているので、横に結合する。その際、両者に含まれる国名 (country) が一致する行同士を結合する。少なくとも一方のデータフレームに含まれる国はすべて残す。

## # A tibble: 6 x 4
##   country federal democracy  asia
##   <chr>     <int>     <int> <int>
## 1 Germany       1         1     0
## 2 US            1         1     0
## 3 Japan         0         1     1
## 4 Brazil        1        NA    NA
## 5 China        NA         0     1
## 6 UK           NA         1     1

Q5-3-5

df_d とdf_e は異なる変数を持っているので、横に結合する。その際、両者に含まれる国名 (country) が一致する行同士を結合する。両方のデータフレームに含まれる国だけを残す。

## # A tibble: 3 x 4
##   country federal democracy  asia
##   <chr>     <int>     <int> <int>
## 1 Germany       1         1     0
## 2 US            1         1     0
## 3 Japan         0         1     1