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

データはさまざまな形式で存在する可能性があります。 各フォーマットごとに R 特定の関数と引数があります。 このチュートリアルでは、R にデータをインポートする方法について説明します。

CSVの読み込み

最も広く使用されているデータ ストアの XNUMX つは、.csv (カンマ区切り値) ファイル形式です。 R は、起動時に utils パッケージを含むライブラリの配列を読み込みます。 このパッケージは、reading.csv() 関数と組み合わせて 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 はデフォルトで文字値を Factor として返します。 stringsAsFactors = FALSE を追加することで、この設定をオフにできます。

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 のクラスは文字になりました。

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

Clippy.xls という名前のスプレッドシートの場所を確認するには、次のコマンドを使用します。

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 で、R は X__1、X__2、X__3、X__4、および X__5 という名前の XNUMX つの新しい変数を作成しました。

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 行を返していることがわかります。 データセットにはヘッダーがあり、これが次元が 4×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 行列です。 iris データセットにはヘッダー付きの 5 つの列があります。 すべての列のヘッダーを含む最初の XNUMX 行を返します。

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

We can select the columns with the letter, like in 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() 関数で検証されます。

read_excel() は、セル内に数値のない記号が出現した場合、NA を返します。 XNUMX つの関数を組み合わせて欠損値の数を数えることができます

  1. 合計
  2. は。な

これがコードです

iris_na <-read_excel(example, na ="setosa")
sum(is.na(iris_na))

出力

## [1] 50

欠落している値が 50 個あります。これらは setosa 種に属する行です。

他の統計ソフトウェアからデータをインポートする

Heaven パッケージを使用して、さまざまなファイル形式をインポートします。 このパッケージのサポート SAS、STATA、SPSS ソフトウェア。ファイルの拡張子に応じて、次の関数を使用してさまざまな種類のデータセットを開くことができます。

  • SAS: read_sas()
  • STATA: read_dta() (または read_stata()、どちらも同一)
  • SPSS: read_sav() または read_por()。 拡張子を確認する必要があります

これらの関数内で必要な引数は XNUMX つだけです。 ファイルが保存されている PATH を知る必要があります。 これで、SAS、STATA、SPSS のすべてのファイルを開く準備が整いました。 これら XNUMX つの関数は URL も受け入れます。

library(haven)

ヘイブンにはコンダR-エッセンシャルが付属しています。それ以外の場合は またはターミナルでconda install -c conda-forge r-haven

サスを読む

この例では、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 データ ファイルの場合は、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() 関数を使用して SPSS ファイルを開きます。 ファイル拡張子「.sav」

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

データインポートのベストプラクティス

R にデータをインポートする場合、次のチェックリストを実装すると便利です。これにより、R にデータを正しくインポートしやすくなります。

  • スプレッドシートの一般的な形式は、最初の行をヘッダー (通常は変数名) として使用することです。
  • データセットに空白スペースを含む名前を付けないでください。 別の変数として解釈される可能性があります。 あるいは、「_」または「-」を使用することをお勧めします。
  • 短い名前が好まれます
  • 名前に記号を含めないでください。つまり、exchange_rate_$_€ は正しくありません。 名前を付けることをお勧めします:exchange_rate_dollar_euro
  • それ以外の場合は、欠損値に NA を使用します。後で形式をクリーンアップする必要があります。

まとめ

次の表は、R でさまざまな種類のファイルをインポートするために使用する関数をまとめたものです。最初の列は関数に関連するライブラリを示します。最後の列はデフォルトの引数を示します。

図書室へようこそ DevOps Tools Engineer試験のObjective 演算 デフォルトの引数
ユーティリティ CSVファイルの読み込み read.csv() ファイル、ヘッダー =,TRUE、sep = ","
readxl EXCELファイルの読み込み read_excel() パス、範囲 = NULL、col_names = TRUE
避難所 SASファイルの読み込み read_sas() path
避難所 STATAファイルの読み込み read_stata() path
避難所 SPSSファイルを読む read_sav() path

次の表は、read_excel() 関数を使用して選択範囲をインポートするさまざまな方法を示しています。

演算 DevOps Tools Engineer試験のObjective Arguments
read_excel() n 行を読み取ります n_max = 10
Excelのように行と列を選択します 範囲 = 「A1:D10」
インデックスのある行を選択する 範囲=セル行数(1:3)
文字が含まれる列を選択する range = cell_cols(“A:C”)