データの形式として最もよく使われるものの1つが、CSV (comma separated values) という形式である。これはただのテキストファイルであり、値がカンマで区切られているだけである。
この形式のファイルの中身を理解するために、Rによる統計分析の基礎で使った fake-data-01.csv を開いてみよう(前回プロジェクト内の data ディレクトリに一度保存した。
まず、ファインダ(Windowsの場合はエクスプローラ)でこのファイルを副クリック(右クリックまたは control を押しながらクリック)し、「プログラムから開く」を選び、Excel で開いてみよう。見慣れた形式(スプレッドシート)でデータが見えるはずだ。確認できたらExcelを閉じよう。
次に、同じファイルを同様に「プログラムから開く」でメモ帳で開いてみよう。ファイルの中身が見えるはずだ。CSV ファイルは、1行目は変数の名前、2行目以降は各行が1つの観測(このデータの場合は1人)、各行で異なる変数の間にカンマがある(そのため、カンマ区切りデータと呼ばれる)という特徴がある。
この形式のメリットとして、
などがあげられる(注意:このファイルを Word 等のワープロソフトで編集しないように。余分な内容が追加されてデータの中身が変わってしまうので。)。
Excel 等に自分でデータを打ち込んで新しいデータセットを作るときは、できるだけこのCSV 形式を選んだ方がよい。
CSV形式のデータは、readr::read_csv()
でRに読み込むことができる。
## Parsed with column specification:
## cols(
## id = col_integer(),
## sex = col_character(),
## age = col_integer(),
## height = col_double(),
## weight = col_double(),
## income = col_integer()
## )
プロジェクト内の data という名前のディレクトリに入っていることを data/
の部分で示し、そのフォルダ内の fake-data-01.csv
を指定して開いている。 このとき、引用符を忘れないように注意する。引用符はシングル「’」でも、ダブル 「"」でもよい。
RStudio でデータを読み込むと、右上の EnvironmentタブのDataのところに読み込んだデータセットが表示される。
念のために中身を少しだけ確認しておこう。
## # A tibble: 6 x 6
## id sex age height weight income
## <int> <chr> <int> <dbl> <dbl> <int>
## 1 1 male 52 174 63.1 3475810
## 2 2 male 33 175. 70.2 457018
## 3 3 male 22 175 82.6 1627793
## 4 4 male 33 170. 81.8 6070642
## 5 5 male 26 167. 51.2 1083052
## 6 6 male 37 159. 57.8 2984929
## # A tibble: 6 x 6
## id sex age height weight income
## <int> <chr> <int> <dbl> <dbl> <int>
## 1 95 female 21 165. 56.3 1339138
## 2 96 female 65 161. 46.8 6127136
## 3 97 female 45 161. 48.7 1062663
## 4 98 female 53 166. 64.2 10154200
## 5 99 female 43 158. 48.5 8287163
## 6 100 female 48 154. 42 1125390
Excel のデータは、.xlsx または .xls という拡張子で保存されている。 このデータをRで直接読む方法もあるが、ここではExcel 形式のデータをCSV形式に変換し、それを上で説明した方法で読むことにする。
例として、fake-data-03.xlsx を使う。まず、このデータをダウンロードし、Excel で開こう。
これを、CSV形式に変換し、プロジェクト内の data フォルダに保存する。そのために、以下を実行する。
保存できたら、RStudioの右下の data フォルダをクリックし、fake-data-03.csv が保存されていることを確かめよう。
あとは、先ほどと同様の方法でデータを読めばいいので、
## Parsed with column specification:
## cols(
## id = col_integer(),
## sex = col_character(),
## age = col_integer(),
## height = col_double(),
## weight = col_double(),
## income = col_integer()
## )
とすればよい。RStudio の右上で、データが読み込めたこと(mycsv2というデータが追加されたこと)を確認しよう。
念のために中身を少しだけ確認しておこう。
## # A tibble: 6 x 6
## id sex age height weight income
## <int> <chr> <int> <dbl> <dbl> <int>
## 1 1 male 46 168. 72.1 2102061
## 2 2 male 22 177. 85.4 2729262
## 3 3 male 61 172. 81.8 1193016
## 4 4 male 48 170. 65.2 3014919
## 5 5 male 44 168. 66 3982087
## 6 6 male 23 161. 50.8 3702544
## # A tibble: 6 x 6
## id sex age height weight income
## <int> <chr> <int> <dbl> <dbl> <int>
## 1 95 female 47 150. 33.2 9814520
## 2 96 female 50 154. 49.8 2299483
## 3 97 female 37 160. 54.6 4912932
## 4 98 female 63 154. 47.3 3627498
## 5 99 female 49 145. 37.7 51329365
## 6 100 female 63 155. 43.4 14160139
ここまでで2つのデータセットを読み込んだので、RStudioの右上には、2つのデータセット、mycsv1 と mycsv2 が表示されているはずである。このように、Rには複数のデータを同時に利用できるというメリットがある。
これらのデータセットに含まれる変数を確認してみよう。
## [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 フォルダに保存しよう。 これを読むには、haven パッケージが必要である。
RStudio の右上で、データが読み込めたことを確認しよう。
念のために中身も少しだけ確認しておこう。
## # A tibble: 6 x 6
## id sex age height weight income
## <dbl> <chr> <dbl> <dbl> <dbl> <dbl>
## 1 1 male 31 167. 59.8 1094707
## 2 2 male 57 154. 51.4 370882
## 3 3 male 52 168. 61.2 12449508
## 4 4 male 46 179. 71.8 25811696
## 5 5 male 58 169. 70.5 1182427
## 6 6 male 49 155. 32.7 706000
## # A tibble: 6 x 6
## id sex age height weight income
## <dbl> <chr> <dbl> <dbl> <dbl> <dbl>
## 1 95 female 33 161. 47.6 2694716
## 2 96 female 51 157. 55.9 1822781
## 3 97 female 46 161. 61.5 7372126
## 4 98 female 27 154. 52.9 4945325
## 5 99 female 58 163. 65.1 1983602
## 6 100 female 25 152. 38.7 699745
SPSS 形式のデータには、.savという拡張子が付いている。 Rでは、haven::read_sav()
(または haven::read_spss()
)で読み込める。
例として、fake-data-spss.sav をダウンロードし、data フォルダに保存しよう。 このファイルは、以下のコマンドで読み込める。
RStudio の右上で、データが読み込めたことを確認しよう。
念のために中身も少しだけ確認しておこう。
## # A tibble: 6 x 6
## id sex age height weight income
## <dbl> <dbl+lbl> <dbl> <dbl> <dbl> <dbl>
## 1 1 1 67 168. 58.5 1659808.
## 2 2 1 57 167. 54.5 1550051
## 3 3 1 58 165. 62.9 3139595
## 4 4 1 40 172. 68.8 4563089
## 5 5 1 24 167. 59.8 1864069
## 6 6 1 59 173. 83.6 5311530
## # A tibble: 6 x 6
## id sex age height weight income
## <dbl> <dbl+lbl> <dbl> <dbl> <dbl> <dbl>
## 1 95 2 28 162 53.4 1683968.
## 2 96 2 68 158. 53.4 12322588
## 3 97 2 48 157. 46.6 1901600
## 4 98 2 33 156. 52.9 7906638
## 5 99 2 59 160. 41.1 3333649
## 6 100 2 36 160. 47.4 658383