CSV 形式のデータを読む

データの形式として最もよく使われるものの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 形式のデータを読む

Excel のデータは、.xlsx または .xls という拡張子で保存されている。 このデータをRで直接読む方法もあるが、ここではExcel 形式のデータをCSV形式に変換し、それを上で説明した方法で読むことにする。

例として、fake-data-03.xlsx を使う。まず、このデータをダウンロードし、Excel で開こう。

これを、CSV形式に変換し、プロジェクト内の data フォルダに保存する。そのために、以下を実行する。

  1. Excel 左上の「ファイル」から「名前を付けて保存」を選ぶ
  2. 保存先として、プロジェクト(例:ドキュメント/comparativeB)内の data ディレクトリを選ぶ
  3. ポップアップで出てきたウィンドウの「ファイルの種類」で、CSV(カンマ区切り)(*.csv) を選び、保存する

保存できたら、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

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

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

その他

Rはこの他には様々な形式のデータを読むことができる。必要に応じて他の方法も解説するが、この授業で他の形式が必要になることはないはずである。



授業の内容に戻る