R Language
外部テーブル(Excel、SAS、SPSS、Stata)のI / O
サーチ…
リオでのデータのインポート
多くの一般的なファイル形式からデータをインポートする簡単な方法は、 rioです。このパッケージは、多くの一般的に使用されるデータインポート関数をラップする関数import()
を提供し、それによって標準インタフェースを提供します。ファイル名やURLをimport()
渡すだけで簡単に動作します:
import("example.csv") # comma-separated values
import("example.tsv") # tab-separated values
import("example.dta") # Stata
import("example.sav") # SPSS
import("example.sas7bdat") # SAS
import("example.xlsx") # Excel
import()
は、圧縮ディレクトリ、URL(HTTPまたはHTTPS)、およびクリップボードから読み取ることもできます。サポートされているすべてのファイル形式の包括的なリストは、 rioパッケージのgithubリポジトリにあります 。
読み込みしようとしている特定のファイル形式に関連するいくつかのパラメータを指定し、 import()
関数内で直接渡すこともできます。
import("example.csv", format = ",") #for csv file where comma is used as separator
import("example.csv", format = ";") #for csv file where semicolon is used as separator
Excelファイルのインポート
次の表にまとめられているように、それぞれ異なる言語またはリソースを使用してExcelファイルを読み込むいくつかのRパッケージがあります。
Rパッケージ | 用途 |
---|---|
xlsx | Java |
XLconnect | Java |
openxlsx | C ++ |
readxl | C ++ |
RODBC | ODBC |
gdata | Perl |
JavaやODBCを使用するパッケージでは、RのバージョンやOSによって互換性の問題が生じる可能性があるため、システムの詳細を知ることが重要です。たとえば、 XLconnect
ビットを使用している場合、 xlsx
またはXLconnect
を使用するにはJava 64ビットも必要XLconnect
。
各パッケージでのExcelファイルの読み込みの例を以下に示します。多くのパッケージには、同じまたは非常によく似た関数名があります。したがって、 package::function
ように明示的にパッケージを記述すると便利です。 openxlsx
パッケージには、 openxlsx
事前インストールが必要です。
xlsxパッケージを使用してExcelのファイルを読む
library(xlsx)
インポートするには、シートのインデックスまたは名前が必要です。
xlsx::read.xlsx("Book1.xlsx", sheetIndex=1)
xlsx::read.xlsx("Book1.xlsx", sheetName="Sheet1")
XLconnectパッケージでExcelファイルを読み込む
library(XLConnect)
wb <- XLConnect::loadWorkbook("Book1.xlsx")
# Either, if Book1.xlsx has a sheet called "Sheet1":
sheet1 <- XLConnect::readWorksheet(wb, "Sheet1")
# Or, more generally, just get the first sheet in Book1.xlsx:
sheet1 <- XLConnect::readWorksheet(wb, getSheets(wb)[1])
XLConnect
は、 Book1.xlsx
埋め込まれた事前定義のExcelセルスタイルを自動的にインポートしBook1.xlsx
。これは、ワークブックオブジェクトを書式設定し、完全に書式設定されたExcelドキュメントを書き出す場合に便利です。まず、あなたはで所望のセルの書式を作成する必要がありますBook1.xlsx
として、例えば、そしてそれらを保存myHeader
、 myBody
とmyPcts
。次に、ワークブックをR
にロードした後(上記参照):
Headerstyle <- XLConnect::getCellStyle(wb, "myHeader")
Bodystyle <- XLConnect::getCellStyle(wb, "myBody")
Pctsstyle <- XLConnect::getCellStyle(wb, "myPcts")
セルスタイルがR
環境に保存されるようになりました。データの特定の範囲にセルスタイルを割り当てるには、範囲を定義してスタイルを割り当てる必要があります。
Headerrange <- expand.grid(row = 1, col = 1:8)
Bodyrange <- expand.grid(row = 2:6, col = c(1:5, 8))
Pctrange <- expand.grid(row = 2:6, col = c(6, 7))
XLConnect::setCellStyle(wb, sheet = "sheet1", row = Headerrange$row,
col = Headerrange$col, cellstyle = Headerstyle)
XLConnect::setCellStyle(wb, sheet = "sheet1", row = Bodyrange$row,
col = Bodyrange$col, cellstyle = Bodystyle)
XLConnect::setCellStyle(wb, sheet = "sheet1", row = Pctrange$row,
col = Pctrange$col, cellstyle = Pctsstyle)
XLConnect
は簡単ですが、書式設定が非常に遅くなることがあります。はるかに速くて面倒なフォーマットオプションがopenxlsx
によって提供されていopenxlsx
。
openxlsxパッケージを使用してExcelのファイルを読む
Excelファイルはパッケージopenxlsx
でインポートできます
library(openxlsx)
openxlsx::read.xlsx("spreadsheet1.xlsx", colNames=TRUE, rowNames=TRUE)
#colNames: If TRUE, the first row of data will be used as column names.
#rowNames: If TRUE, first column of data will be used as row names.
Rに読み込むsheet
は、 sheet
引数にその位置を指定することで選択できます。
openxlsx::read.xlsx("spreadsheet1.xlsx", sheet = 1)
またはその名前を宣言することによって:
openxlsx::read.xlsx("spreadsheet1.xlsx", sheet = "Sheet1")
さらに、 openxlsx
は読み取りシートの日付列を検出できます。日付の自動検出を可能にするには、引数detectDates
をTRUE
に設定する必要があります。
openxlsx::read.xlsx("spreadsheet1.xlsx", sheet = "Sheet1", detectDates= TRUE)
Readingはreadxlパッケージを使用してファイルを処理します
Excelファイルは、 readxl
パッケージを使用してデータフレームとしてR
インポートできます。
library(readxl)
.xls
ファイルと.xlsx
ファイルの両方を読み取ることができます。
readxl::read_excel("spreadsheet1.xls")
readxl::read_excel("spreadsheet2.xlsx")
インポートするシートは、番号または名前で指定できます。
readxl::read_excel("spreadsheet.xls", sheet = 1)
readxl::read_excel("spreadsheet.xls", sheet = "summary")
引数col_names = TRUE
は、最初の行を列名として設定します。
readxl::read_excel("spreadsheet.xls", sheet = 1, col_names = TRUE)
引数col_types
を使用して、データの列型をベクトルとして指定できます。
readxl::read_excel("spreadsheet.xls", sheet = 1, col_names = TRUE,
col_types = c("text", "date", "numeric", "numeric"))
ReadingはRODBCパッケージでファイルを読み込みます
Excelファイルは、WindowsのAccess Database Engine(ACE)(以前はJET)とインターフェイスするODBC Excelドライバを使用して読み取ることができます。 RODBCパッケージを使用すると、Rはこのドライバに接続してワークブックに直接問い合わせることができます。ワークシートは、第1行の列ヘッダーを、類似のタイプの編成列のデータで維持すると仮定されています。 注:この方法は、JET / ACEがインストールされている.dllファイルであり、他のオペレーティングシステムでは使用できないため、Windows / PCマシンに限定されています。
library(RODBC)
xlconn <- odbcDriverConnect('Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};
DBQ=C:\\Path\\To\\Workbook.xlsx')
df <- sqlQuery(xlconn, "SELECT * FROM [SheetName$]")
close(xlconn)
このアプローチでSQLエンジンと接続すると、 JOIN
やUNION
操作を含むデータベーステーブルと同様にExcelワークシートを照会できます。構文はJET / ACE SQLの方言に従います。 注:データアクセスDMLステートメント、特に更新可能なクエリではなく、ワークブックでSELECT
を実行できるのは、DMLステートメントのみです。
joindf <- sqlQuery(xlconn, "SELECT t1.*, t2.* FROM [Sheet1$] t1
INNER JOIN [Sheet2$] t2
ON t1.[ID] = t2.[ID]")
uniondf <- sqlQuery(xlconn, "SELECT * FROM [Sheet1$]
UNION
SELECT * FROM [Sheet2$]")
現在のワークブックを指す同じODBCチャネルから他のワークブックを照会することもできます。
otherwkbkdf <- sqlQuery(xlconn, "SELECT * FROM
[Excel 12.0 Xml;HDR=Yes;
Database=C:\\Path\\To\\Other\\Workbook.xlsx].[Sheet1$];")
Readingはgdataパッケージでファイルを読み込みます
ここの例
Stata、SPSS、およびSASファイルの読み書き
パッケージforeign
とhaven
は、Stata、SPSS、SAS、および関連ソフトウェアのようなさまざまな統計パッケージからファイルをインポートおよびエクスポートするために使用できます。サポートされている各データ型のファイルをインポートするためのread
関数があります。
# loading the packages
library(foreign)
library(haven)
library(readstata13)
library(Hmisc)
最も一般的なデータ型の例をいくつか示します。
# reading Stata files with `foreign`
read.dta("path\to\your\data")
# reading Stata files with `haven`
read_dta("path\to\your\data")
foreign
パッケージは、Stata 7-12のバージョン用のstata(.dta)ファイルを読み取ることができます。開発ページによると、 read.dta
は多かれ少なかれread.dta
されており、バージョン13以降では読み込みのために更新されません。より最近のバージョンのStataでは、 readstata13
パッケージまたはhaven
使用できます。 readstata13
場合、ファイルは
# reading recent Stata (13+) files with `readstata13`
read.dta13("path\to\your\data")
SPSSおよびSASファイルでの読み込み
# reading SPSS files with `foreign`
read.spss("path\to\your\data.sav", to.data.frame = TRUE)
# reading SPSS files with `haven`
read_spss("path\to\your\data.sav")
read_sav("path\to\your\data.sav")
read_por("path\to\your\data.por")
# reading SAS files with `foreign`
read.ssd("path\to\your\data")
# reading SAS files with `haven`
read_sas("path\to\your\data")
# reading native SAS files with `Hmisc`
sas.get("path\to\your\data") #requires access to saslib
# Reading SA XPORT format ( *.XPT ) files
sasxport.get("path\to\your\data.xpt") # does not require access to SAS executable
SAScii
パッケージは、SAS SETインポートコードを受け入れ、 read.fwf
で処理できるテキストファイルを構築する機能を提供します。大規模な公開リリースデータセットのインポートに対して非常に堅牢であることが証明されています。サポートはhttps://github.com/ajdamico/SASciiです。
データフレームを他の統計パッケージにエクスポートするには、書き込み関数write.foreign()
使用します。これは2つのファイルを作成します.1つはデータを格納し、もう1つはデータを読み取るために必要な指示を含んでいます。
# writing to Stata, SPSS or SAS files with `foreign`
write.foreign(dataframe, datafile, codefile,
package = c("SPSS", "Stata", "SAS"), ...)
write.foreign(dataframe, "path\to\data\file", "path\to\instruction\file", package = "Stata")
# writing to Stata files with `foreign`
write.dta(dataframe, "file", version = 7L,
convert.dates = TRUE, tz = "GMT",
convert.factors = c("labels", "string", "numeric", "codes"))
# writing to Stata files with `haven`
write_dta(dataframe, "path\to\your\data")
# writing to Stata files with `readstata13`
save.dta13(dataframe, file, data.label = NULL, time.stamp = TRUE,
convert.factors = TRUE, convert.dates = TRUE, tz = "GMT",
add.rownames = FALSE, compress = FALSE, version = 117,
convert.underscore = FALSE)
# writing to SPSS files with `haven`
write_sav(dataframe, "path\to\your\data")
SPSSによって保存されたファイルは、次のようにread.spss
で読み取ることもできます。
foreign::read.spss('data.sav', to.data.frame=TRUE, use.value.labels=FALSE,
use.missings=TRUE, reencode='UTF-8')
# to.data.frame if TRUE: return a data frame
# use.value.labels if TRUE: convert variables with value labels into R factors with those levels
# use.missings if TRUE: information on user-defined missing values will used to set the corresponding values to NA.
# reencode character strings will be re-encoded to the current locale. The default, NA, means to do so in a UTF-8 locale, only.
フェザーファイルのインポートまたはエクスポート
Featherは、PythonとRの間の相互運用性を高め、メタデータ(日付クラスなど)を維持しながら、言語にとらわれない方法でデータフレームを格納するように設計されたApache Arrowの実装です。フェザーファイルを読むと標準のdata.frameではなく、
library(feather)
path <- "filename.feather"
df <- mtcars
write_feather(df, path)
df2 <- read_feather(path)
head(df2)
## A tibble: 6 x 11
## mpg cyl disp hp drat wt qsec vs am gear carb
## <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4
## 2 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4
## 3 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1
## 4 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1
## 5 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2
## 6 18.1 6 225 105 2.76 3.460 20.22 1 0 3 1
head(df)
## mpg cyl disp hp drat wt qsec vs am gear carb
## Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4
## Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4
## Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1
## Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1
## Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2
## Valiant 18.1 6 225 105 2.76 3.460 20.22 1 0 3 1
現在のドキュメントには、次の警告が含まれています。
ユーザーへの注意:フェザーはアルファソフトウェアとして扱う必要があります。特に、ファイル形式は次の年に進化する可能性が高いです。長期間のデータ保存にフェザーを使用しないでください。