R へのデータのインポート: CSV、Excel、SPSS、Stata、SAS ファイルの読み取り
⚡ スマートサマリー
Rにおけるデータのインポートでは、read.csv()関数によるCSVファイルの読み込み、readxl関数によるExcelワークブックの読み込み、haven関数によるSAS、STATA、SPSSファイルの読み込みについて解説します。また、インポート時にシート、行、セル範囲を正確に選択する方法も示します。

データはさまざまな形式で存在する可能性があります。 各フォーマットごとに R 特定の関数と引数があります。 このチュートリアルでは、R にデータをインポートする方法について説明します。
CSVファイルを読み込む
最も広く使われているデータ形式は、カンマ区切り値(.csv)です。Rは起動時に、utilsパッケージを含む様々なライブラリを読み込みます。このパッケージには、CSVファイルを開く標準的な方法であるread.csv()関数が用意されています。構文は以下のとおりです。
read.csv(file, header = TRUE, sep = ",")
引数:
- file: ファイルが保存されているPATH
- ヘッダ: ファイルにヘッダーがあるかどうかを確認します。デフォルトでは、ヘッダーは TRUE に設定されています。
- 9月: 変数を分割するために使用される記号。 デフォルトでは、「,」です。
データファイル名 mtcats を読み込みます。 CSV ファイルはオンラインに保存されます。 .csv ファイルがローカルに保存されている場合は、コード スニペット内の PATH を置き換えることができます。 「 」で囲むことを忘れないでください。 PATH は文字列値である必要があります。
Mac ユーザーの場合、ダウンロード フォルダーのパスは次のとおりです。
"/Users/USERNAME/Downloads/FILENAME.csv"
Windows ユーザーの場合:
"C:\Users\USERNAME\Downloads\FILENAME.csv"
ファイル名の拡張子を常に指定する必要があることに注意してください。
- この.csv
- 。XLSX
- 。TXT
- ...
PATH <- 'https://raw.githubusercontent.com/guru99-edu/R-Programming/master/mtcars.csv' df <- read.csv(PATH, header = TRUE, sep = ',') length(df)
出力:
## [1] 12
class(df$X)
出力:
## [1] "factor"
Rのバージョン4.0.0より前のバージョンでは、read.csv()関数はすべての文字列をファクター型に変換していました。そのため、上記のclass(df$X)は「factor」を返します。stringsAsFactors = FALSEを設定することで、この変換を無効にすることができます。
⚠️ バージョンに関する注記: から R 4.0.0 デフォルトでは stringsAsFactors = FALSE となっているため、文字型の列は文字型のままとなり、最新のインストール環境では最初の例で「character」が返されます。以下のように引数を明示的に渡すと、どのバージョンでも同じ結果が得られるため、これが最も安全な方法です。
PATH <- 'https://raw.githubusercontent.com/guru99-edu/R-Programming/master/mtcars.csv' df <-read.csv(PATH, header =TRUE, sep = ',', stringsAsFactors =FALSE) class(df$X)
出力:
## [1] "character"
変数 X のクラスは文字になりました。
read.csv() と read_csv():どちらを使うべきか?
read.csv() は基本の R に同梱されており、パッケージは不要です。readr パッケージには read_csv() が追加されており、より高速で、ユーザーに代わって判断を行う回数が少なくなっています。
| 基準 | read.csv() (utils) | read_csv() (readr) |
|---|---|---|
| パッケージが必要です | なし | 読み手 |
| 大容量ファイルの処理速度 | もっとゆっくり | 数倍速い |
| 返品 | データフレーム | ティブル |
| 列名 | スペースをドットに変換 | 書かれたとおりに保管 |
| 型検出 | サイレント | 列仕様で報告されています |
library(readr) df <- read_csv(PATH) # For very large files, data.table::fread() is faster still library(data.table) df <- fread(PATH)
小さなファイルや、追加パッケージなしで実行する必要のあるスクリプトの場合は、read.csv() を使用してください。ファイルが大きい場合や、列名を正確に保持する必要がある場合は、read_csv() を使用してください。
Excelファイルを読み込む
Excel ファイルはデータ アナリストの間で非常に人気があります。 スプレッドシートは操作が簡単で柔軟性があります。 R には、Excel スプレッドシートをインポートするためのライブラリ readxl が装備されています。
このコードを使用する
require(readxl)
readxl がマシンにインストールされているかどうかを確認します。 r-conda-essential を使用して r をインストールすると、ライブラリはすでにインストールされています。 コマンド ウィンドウに次の内容が表示されるはずです。
出力:
Loading required package: readxl.
パッケージがインストールされていない場合は、conda を使用してインストールできます。 ライブラリ または、ターミナルで conda install -c mittner r-readxl を使用します。
ライブラリをロードして Excel ファイルをインポートするには、次のコマンドを使用します。
library(readxl)
readxl_example()
このチュートリアルでは、readxl パッケージに含まれる例を使用します。
コードを使用する
readxl_example()
ライブラリ内の利用可能なすべてのスプレッドシートを表示します。
特定の表計算ソフトの場所を確認するには、その名前を指定します。
readxl_example("geometry.xls")
conda を使用して R をインストールする場合、スプレッドシートは Anaconda3/lib/R/library/readxl/extdata/filename.xls にあります。
read_excel()
read_excel() は、.xls および .xlsx 拡張子の両方のファイルを開き、適切なパーサーを自動的に選択します。
構文は次のとおりです。
read_excel(PATH, sheet = NULL, range= NULL, col_names = TRUE) arguments: -PATH: Path where the excel is located -sheet: Select the sheet to import. By default, all -range: Select the range to import. By default, all non-null cells -col_names: Select the columns to import. By default, all non-null columns
readxl ライブラリからスプレッドシートをインポートし、最初のシートの列数をカウントできます。
# Store the path of `datasets.xlsx` example <- readxl_example("datasets.xlsx") # Import the spreadsheet df <- read_excel(example) # Count the number of columns length(df)
出力:
## [1] 5
エクセルシート()
ファイル datasets.xlsx は 4 つのシートで構成されています。 Excel_sheets() 関数を使用すると、ブック内でどのシートが利用可能であるかを確認できます。
example <- readxl_example("datasets.xlsx")
excel_sheets(example)
出力:
[1] "iris" "mtcars" "chickwts" "quakes"
ワークシートに多数のシートが含まれている場合、シート引数を使用して特定のシートを簡単に選択できます。 シートの名前またはシート インデックスを指定できます。 両方の関数が同じ出力を返すかどうかは、identify() で確認できます。
example <- readxl_example("datasets.xlsx") quake <- read_excel(example, sheet = "quakes") quake_1 <-read_excel(example, sheet = 4) identical(quake, quake_1)
出力:
## [1] TRUE
どのセルを読み取るかを 2 つの方法で制御できます
- n 行を返すには n_max 引数を使用します
- 範囲引数を cell_rows または cell_cols と組み合わせて使用します
たとえば、最初の 5 行をインポートするには、n_max を XNUMX に設定します。
# Read the first five row: with header iris <-read_excel(example, n_max =5, col_names =TRUE)
Col_names を FALSE に変更すると、R はヘッダーを自動的に作成します。
# Read the first five row: without header iris_no_header <-read_excel(example, n_max =5, col_names =FALSE)
iris_no_header
データフレームiris_no_headerにおいて、readxlは5つのプレースホルダー名を生成しました。旧バージョンではX__1からX__5までが生成されましたが、現行バージョンでは…1から…5までが生成されます。
引数の範囲を使用して、スプレッドシート内の行と列を選択することもできます。 以下のコードでは、Excel スタイルを使用して A1 から B5 までの範囲を選択します。
# Read rows A1 to B5 example_1 <-read_excel(example, range = "A1:B5", col_names =TRUE) dim(example_1)
出力:
## [1] 4 2
example_1 は 4 行 2 列を返します。範囲 A1:B5 はスプレッドシートの 5 行をカバーしますが、最初の行はヘッダーとして使用されるため、ディメンションは 4 x 2 となります。
1 番目の例では、返す行の範囲を制御する関数 cell_rows() を使用します。 行 5 から 1 をインポートしたい場合は、cell_rows(5:1) を設定できます。 cell_rows(5:5) は cell_rows(1:XNUMX) と同じ出力を返すことに注意してください。
# Read rows 1 to 5 example_2 <-read_excel(example, range =cell_rows(1:5),col_names =TRUE) dim(example_2)
出力:
## [1] 4 5
対照的に、example_2 は 4 × 5 です。cell_rows(1:5) は再び最初の行をヘッダーとして扱うため、5 つの列すべてにわたって 4 つのデータ行が返されます。
最初の行から始まらない行をインポートする場合は、col_names = FALSE を含める必要があります。 range = cell_rows(2:5) を使用すると、データ フレームにヘッダーがないことが明らかになります。
iris_row_with_header <-read_excel(example, range =cell_rows(2:3), col_names=TRUE) iris_row_no_header <-read_excel(example, range =cell_rows(2:3),col_names =FALSE)
Excelと同様に、文字で列を選択することもできます。
# Select columns A and B col <- read_excel(example, range = cell_cols("A:B")) dim(col)
出力:
## [1] 150 2
注: range = cell_cols(“A:B”)、null 以外の値を持つすべてのセルを出力します。 データセットには 150 行が含まれているため、read_excel() は最大 150 行を返します。これは dim() 関数で検証されます。
na引数は、read_excel()関数に欠損値として扱う値を指定します。それらの値をsum()とis.na()でカウントします。
- 合計
- は。な
これがコードです
iris_na <-read_excel(example, na ="setosa") sum(is.na(iris_na))
出力:
## [1] 50
欠落している値が 50 個あります。これらは setosa 種に属する行です。
他の統計ソフトウェアからデータをインポートする
他の統計パッケージからのファイルは、 避難所 パッケージは、 SASSTATAやSPSSなどでは、ファイルの拡張子に応じて、以下の関数を使用してさまざまな種類のデータセットを開くことができます。
- SAS: read_sas()
- STATA: read_dta() (または read_stata()、どちらも同一)
- SPSS: read_sav() または read_por()。 拡張子を確認する必要があります
これらの関数はそれぞれ、ファイルが保存されているパスという引数を1つだけ必要とし、それぞれが URL 地元の道と同じくらい簡単に。
library(haven)
ヘイブンにはコンダR-エッセンシャルが付属しています。それ以外の場合は またはターミナルでconda install -c conda-forge r-haven
SASファイルの読み込み
この例では、IDRE の入場データセットを使用します。
PATH_sas <- 'https://github.com/guru99-edu/R-Programming/blob/master/binary.sas7bdat?raw=true' df <- read_sas(PATH_sas) head(df)
出力:
## # A tibble: 6 x 4 ## ADMIT GRE GPA RANK ## <dbl> <dbl> <dbl> <dbl> ## 1 0 380 3.61 3 ## 2 1 660 3.67 3 ## 3 1 800 4.00 1 ## 4 1 640 3.19 4 ## 5 0 520 2.93 4 ## 6 1 760 3.00 2
STATAファイルを読み込む
STATA データ ファイルの場合は、read_dta() を使用できます。 まったく同じデータセットを使用しますが、.dta ファイルに保存します。
PATH_stata <- 'https://github.com/guru99-edu/R-Programming/blob/master/binary.dta?raw=true' df <- read_dta(PATH_stata) head(df)
出力:
## # A tibble: 6 x 4 ## admit gre gpa rank ## <dbl> <dbl> <dbl> <dbl> ## 1 0 380 3.61 3 ## 2 1 660 3.67 3 ## 3 1 800 4.00 1 ## 4 1 640 3.19 4 ## 5 0 520 2.93 4 ## 6 1 760 3.00 2
SPSSファイルを読み込む
read_sav() は、拡張子が .sav の SPSS ファイルを開きます。
PATH_spss <- 'https://github.com/guru99-edu/R-Programming/blob/master/binary.sav?raw=true' df <- read_sav(PATH_spss) head(df)
出力:
## # A tibble: 6 x 4 ## admit gre gpa rank ## <dbl> <dbl> <dbl> <dbl> ## 1 0 380 3.61 3 ## 2 1 660 3.67 3 ## 3 1 800 4.00 1 ## 4 1 640 3.19 4 ## 5 0 520 2.93 4 ## 6 1 760 3.00 2
データインポートのベストプラクティス
インポート前に以下のチェックリストを確認しておけば、後々のクリーニング作業のほとんどを省くことができます。
- スプレッドシートの一般的な形式は、最初の行をヘッダー (通常は変数名) として使用することです。
- ファイル名や列名に空白文字を使用しないでください。空白文字は列区切り文字として認識される可能性があります。代わりにアンダースコアを使用してください。
- 短い名前が好まれます
- 名前に記号を使用しないでください。exchange_rate_dollar_euro と記述し、exchange_rate_$_€ とは記述しないでください。
- 欠損値は、空白、ハイフン、または-99などの番兵値ではなく、NAとしてエンコードしてください。そうしないと、後でクリーニングする必要が生じます。
Rにおけるデータのインポート:関数リファレンス
以下の表は、ファイルの種類ごとに対応するインポート関数、それを提供するライブラリ、およびデフォルトの引数を示しています。
| 図書館 | DevOps Tools Engineer試験のObjective | 演算 | デフォルトの引数 |
|---|---|---|---|
| ユーティリティ | CSVファイルの読み込み | read.csv() | ファイル、ヘッダー = TRUE、区切り文字 = “,” |
| readxl | EXCELファイルの読み込み | read_excel() | パス、範囲 = NULL、col_names = TRUE |
| 避難所 | SASファイルの読み込み | read_sas() | path |
| 避難所 | STATAファイルの読み込み | read_dta() / read_stata() | path |
| 避難所 | SPSSファイルを読み込む | read_sav() | path |
2番目の表は、read_excel()関数を使用して選択範囲をインポートする方法を示しています。
| 演算 | DevOps Tools Engineer試験のObjective | Arguments |
|---|---|---|
| read_excel() | n 行を読み取ります | n_max = 10 |
| Excelのように行と列を選択します | 範囲 = 「A1:D10」 | |
| インデックスのある行を選択する | 範囲=セル行数(1:3) | |
| 文字が含まれる列を選択する | range = cell_cols(“A:C”) |







