RStudio を起動したら、忘れずにプロジェクトを開こう。RStudioの右上部分に自分の指定したプロジェクト名が表示されていればOKである。
次に、tidyverse パッケージを読み込もう。
## ── Attaching packages ─────────────────────────────────────────────────────────────────────────────────────────── tidyverse 1.2.1 ──
## ✔ ggplot2 3.1.0 ✔ purrr 0.2.5
## ✔ tibble 1.4.2 ✔ dplyr 0.7.8
## ✔ tidyr 0.8.2 ✔ stringr 1.3.1
## ✔ readr 1.2.1 ✔ forcats 0.3.0
## ── Conflicts ────────────────────────────────────────────────────────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
Macユーザは次のコマンドも実行しておく。
データの形式として最もよく使われるものの1つが、CSV (comma separated values) という形式である。これはただのテキストファイルであり、値がカンマで区切られているだけである。
この形式のファイルの中身を理解するために、前回の授業で使った fake-data-lec02.csv を開いてみよう。
まず、エクスプローラー(Macの場合はファインダ)でこのファイルを右クリック(副クリックまたは control を押しながらクリック)し、「プログラムから開く」を選び、Excel で開いてみよう。見慣れた形式(スプレッドシート)でデータが見えるはずだ。確認できたらExcelを閉じよう。
次に、同じファイルを同様に「プログラムから開く」でメモ帳で開いてみよう。ファイルの中身が見えるはずだ。CSV ファイルは、1行目は変数の名前、2行目以降は各行が1つの観測(このデータの場合は1人)、各行で異なる変数の間にカンマがある(そのため、カンマ区切りデータと呼ばれる)という特徴がある。
この形式のメリットとして、
などがあげられる(注意:このファイルを Word 等のワープロソフトで編集しないように。余分な内容が追加されてデータの中身が変わってしまうので。)。
Excel 等に自分でデータを打ち込んで新しいデータセットを作るときは、できるだけこのCSV 形式を選んだ方がよい。
CSV形式のデータは、redr::read_csv()
でRに読み込むことができる。
## Parsed with column specification:
## cols(
## id = col_double(),
## sex = col_character(),
## age = col_double(),
## height = col_double(),
## weight = col_double(),
## income = col_double()
## )
プロジェクト内の data という名前のフォルダに入っていることを data/
の部分で示し、そのフォルダ内の fake-data-lec02.csv
を指定して開いている。 このとき、引用符を忘れないように注意する。引用符はシングル「’」でも、ダブル 「"」でもよい。
RStudio でデータを読み込むと、右上の EnvironmentタブのDataのところに読み込んだデータセットが表示される。
念のために中身を少しだけ確認しておこう。
## Observations: 100
## Variables: 6
## $ id <dbl> 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, ...
## $ sex <chr> "male", "male", "male", "male", "male", "male", "male",...
## $ age <dbl> 52, 33, 22, 33, 26, 37, 50, 30, 62, 51, 55, 36, 66, 42,...
## $ height <dbl> 174.0, 175.3, 175.0, 170.1, 167.4, 159.3, 173.3, 162.5,...
## $ weight <dbl> 63.1, 70.2, 82.6, 81.8, 51.2, 57.8, 68.6, 47.2, 68.2, 5...
## $ income <dbl> 3475810, 457018, 1627793, 6070642, 1083052, 2984929, 14...
Excel のデータは、.xlsx または .xls という拡張子で保存されている。 このデータをRで読む方法もあるが、ここではExcel 形式のデータをCSV形式に変換し、それを上で説明した方法で読むことにする。
例として、fake-data-lec03.xlsx を使う。まず、このデータをダウンロードし、Excel で開こう。
download.file(url = "http://yukiyanai.github.io/jp/classes/econometrics2/contents/data/fake-data-lec03.xlsx",
destfile = "data/fake-data-lec03.xlsx")
これを、CSV形式に変換し、プロジェクト内の data フォルダに保存する。そのために、以下を実行する。
保存できたら、RStudioの右下の data フォルダをクリックし、fake-data-lec03.csv が保存されていることを確かめよう。
あとは、先ほどと同様の方法でデータを読めばいいので、
## Parsed with column specification:
## cols(
## id = col_double(),
## sex = col_character(),
## age = col_double(),
## height = col_double(),
## weight = col_double(),
## income = col_double()
## )
とすればよい。RStudio の右上で、データが読み込めたこと(mycsv2というデータが追加されたこと)を確認しよう。
念のために中身を少しだけ確認しておこう。
## Observations: 100
## Variables: 6
## $ id <dbl> 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, ...
## $ sex <chr> "male", "male", "male", "male", "male", "male", "male",...
## $ age <dbl> 46, 22, 61, 48, 44, 23, 46, 60, 30, 25, 26, 22, 36, 65,...
## $ height <dbl> 168.3, 177.1, 171.6, 170.2, 168.5, 160.7, 170.3, 163.7,...
## $ weight <dbl> 72.1, 85.4, 81.8, 65.2, 66.0, 50.8, 75.1, 67.1, 76.7, 6...
## $ income <dbl> 2102061, 2729262, 1193016, 3014919, 3982087, 3702544, 7...
あるいは、readxl::read_excel()
でExcelファイルを読み込むこともできる。
念のために中身を少しだけ確認しておこう。
## Observations: 100
## Variables: 6
## $ id <dbl> 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, ...
## $ sex <chr> "male", "male", "male", "male", "male", "male", "male",...
## $ age <dbl> 46, 22, 61, 48, 44, 23, 46, 60, 30, 25, 26, 22, 36, 65,...
## $ height <dbl> 168.3, 177.1, 171.6, 170.2, 168.5, 160.7, 170.3, 163.7,...
## $ weight <dbl> 72.1, 85.4, 81.8, 65.2, 66.0, 50.8, 75.1, 67.1, 76.7, 6...
## $ income <dbl> 2102061, 2729262, 1193016, 3014919, 3982087, 3702544, 7...
ここまでで3つのデータセットを読み込んだ(そのうち2つの内容は同じだが)ので、RStudioの右上には、3つのデータセット、mycsv1, mycsv2, myxl が表示されているはずである。このように、Rには複数のデータを同時に利用できるというメリットがある。
このうち、csvファイルから読み込んだデータセットについて、データに含まれる変数を確認してみよう。
## [1] "id" "sex" "age" "height" "weight" "income"
## [1] "id" "sex" "age" "height" "weight" "income"
2つのデータセットに含まれる変数名は同じようである。
では、2つのデータはまったく同じものだろうか。ためしに、それぞれのデータセット身長 (height) の平均値を求めてみよう。
## [1] 163.746
## [1] 162.907
平均値は異なる。つまり、変数名は同じでも、データの中身は違うようだ。
このように、異なるデータセットが同じ名前の変数を含んでいることがあるので注意が必要だ。既に学習したとおり、Rでは データセット名$変数名
とすることで、同じ名前の変数でも、異なるデータセットに属している場合にはそれらを区別して利用することができる。
Stata のデータセットには、.dta という拡張子が付いている。
StataのファイルをRで読みたいときは、haven というパッケージに含まれる read_dta()
という関数を使う。(今後これを、haven::read_dta()
と表記する。他のパッケージに含まれる関数についても、`パッケージ名::関数名()
という書き方をする。)
例として、fake-data-stata.dta をダウンロードし、data フォルダに保存しよう。
download.file(url = "http://yukiyanai.github.io/jp/classes/econometrics2/contents/data/fake-data-stata.dta",
destfile = "data/fake-data-stata.dta")
これを読むには、まず haven パッケージを読み込むことが必要である。 パッケージの読み込みには、library()
を使う(インストールされていない場合はまずインストールする)。
パッケージが読み込めたら、データを読む。
RStudio の右上で、データが読み込めたことを確認しよう。
念のために中身も少しだけ確認しておこう。
## Observations: 100
## Variables: 6
## $ id <dbl> 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, ...
## $ sex <chr> "male", "male", "male", "male", "male", "male", "male",...
## $ age <dbl> 31, 57, 52, 46, 58, 49, 52, 34, 57, 41, 43, 43, 40, 45,...
## $ height <dbl> 166.6, 154.3, 168.1, 178.9, 168.7, 155.1, 169.1, 174.4,...
## $ weight <dbl> 59.8, 51.4, 61.2, 71.8, 70.5, 32.7, 62.2, 70.2, 68.5, 5...
## $ income <dbl> 1094707, 370882, 12449508, 25811696, 1182427, 706000, 8...
SPSS 形式のデータには、.savという拡張子が付いている。 Rでは、haven::read_sav()
(または haven::read_spss()
)で読み込める。
例として、fake-data-spss.sav をダウンロードし、data フォルダに保存しよう。
download.file(url = "http://yukiyanai.github.io/jp/classes/econometrics2/contents/data/fake-data-spss.sav",
destfile = "data/fake-data-spss.sav")
このファイルは、以下のコマンドで読み込める。
RStudio の右上で、データが読み込めたことを確認しよう。
念のために中身も少しだけ確認しておこう。
## Observations: 100
## Variables: 6
## $ id <dbl> 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, ...
## $ sex <dbl+lbl> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, ...
## $ age <dbl> 67, 57, 58, 40, 24, 59, 58, 31, 24, 53, 31, 29, 40, 61,...
## $ height <dbl> 167.7, 167.1, 164.9, 171.7, 167.2, 172.9, 160.6, 167.7,...
## $ weight <dbl> 58.5, 54.5, 62.9, 68.8, 59.8, 83.6, 54.5, 72.9, 57.6, 5...
## $ income <dbl> 1659808, 1550051, 3139595, 4563089, 1864069, 5311530, 4...