R へのデータのインポート: CSV、Excel、SPSS、Stata、SAS ファイルの読み取り

⚡ スマートサマリー

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

  • 📄 CSVインポート: read.csv(file, header = TRUE, sep = “,”) は、ローカルパスまたは URL.
  • ⚠️ バージョンの変更: R 4.0.0以降、stringsAsFactorsのデフォルト値がFALSEになったため、文字型の列は文字型のままになります。
  • 📗 Excelインポート: readxl の read_excel() 関数は .xls と .xlsx の両方を扱い、excel_sheets() 関数は最初にすべてのワークシートを一覧表示します。
  • 🎯 正確な選択: n_maxは行数を制限し、rangeはExcel表記を受け取り、cell_rows()またはcell_cols()はインデックスと文字を受け取ります。
  • 🔄 その他のソフトウェア: haven は read_sas()、read_dta()、read_sav() を提供しており、それぞれパスまたは URL.
  • 🧹 入力のクリーンアップ: インポートする前に、欠損値をNAとしてエンコードし、列名にスペースや記号を含めないようにしてください。

Rでデータをインポートする

データはさまざまな形式で存在する可能性があります。 各フォーマットごとに 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

特定の表計算ソフトの場所を確認するには、その名前を指定します。

readxl_example("geometry.xls")

Readxl_Example

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 つの方法で制御できます

  1. n 行を返すには n_max 引数を使用します
  2. 範囲引数を 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)

Excel_シート

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_シート

引数の範囲を使用して、スプレッドシート内の行と列を選択することもできます。 以下のコードでは、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 となります。

Excel_シート

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 つのデータ行が返されます。

Excel_シート

最初の行から始まらない行をインポートする場合は、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_シート

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()でカウントします。

  1. 合計
  2. は。な

これがコードです

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”)

よくあるご質問

R 4.0.0 では、stringsAsFactors のデフォルト値が TRUE から FALSE に変更されました。文字型の列は文字型のままになります。スクリプトが以前の R バージョンでも同じように動作する必要がある場合は、引数を明示的に渡してください。

置き換える URL 引用符で囲まれた完全なローカルパスを使用します。例: “C:/Users/name/data.csv”。スラッシュまたは二重バックスラッシュを使用します。 Windowsそして、getwd() で作業ディレクトリを確認します。

readxl は、.xls および .xlsx ファイルを純粋な R で読み込みます。 Java 依存関係。古い xlsx パッケージのみが必要とします。 Java rを通じてJavaそのため、readxlが推奨される選択肢となっています。

インポート時のサイレントな型変更は、再現性のないAI結果の一般的な原因です。read_csv()関数が報告する列の型を明示的に宣言することで、トレーニングデータセットが毎回同じように読み込まれることが保証されます。

はい。AIアシスタントは、エラーメッセージから区切り文字の誤り、エンコードの問題、ヘッダーの読み間違いなどを診断できます。分析を続行する前に、必ずstr()またはglimpse()で結果を確認してください。