R言語でxlsxファイルを読み込む方法がいくつかあります。ここではreadxlパッケージを使用してxlsxファイルを読み込む方法について解説します。

readxlについて

readxlは、ExcelファイルをRにインポートします。組み込みの「libxls」Cライブラリによる「.xls」と、組み込み「RapidXML」による「.xlsx」をサポートします。外部依存関係なしでWindows、Mac、Linuxで動作します。
readxlによりxlsxファイルを読み込むには、read_xlsx()を使用します。

read_xlsx()の使い方

read_xlsx()の使い方は次になります。


read_xlsx(
  path,
  sheet = NULL,
  range = NULL,
  col_names = TRUE,
  col_types = NULL,
  na = "",
  trim_ws = TRUE,
  skip = 0,
  n_max = Inf,
  guess_max = min(1000, n_max),
  progress = readxl_progress(),
  .name_repair = "unique"
)

read_xlsx()の引数の意味

path

xls/xlsxファイルへのパスを指定します。

sheet = NULL

データを読み取るシートの名前または整数(シートの位置)を指定します。
シートが範囲で指定されている場合、無視されます。どちらの引数もシートを指定しない場合、デフォルトは最初のシートになります。

range = NULL

読み取るセル範囲を指定します。
「B3:D87」のような一般的なExcelの範囲、場合によっては「Budget!B2:G14」などです。範囲が先頭または末尾の空の行または列を含めることを強制する場合でも、厳密に解釈されます。引数skipおよび引数n_max、引数sheetよりも優先されます。

col_names = TRUE

最初の行を列名として使用する場合はTRUE、デフォルト名を使用する場合はFALSE、または各列の名前を指定する文字ベクトルを使用します。
ユーザーがベクトルとして引数col_typesを提供する場合、col_names列ごとに1つのエントリを持つことができます(つまり、引数col_typesと同じ長さを持つか、スキップされていない列ごとに1つのエントリを持つことができます)。

col_types = NULL

スプレッドシートからすべてを推測する場合はNULLか、「skip」または「guess」、「logical」、「numeric」、「date」、「text」、「list」の各オプションから列ごとに1つのエントリを含む文字ベクトルを指定します。
引数col_typesが1つだけ指定されている場合、それはリサイクルされます。スキップされた列のセルの内容は読み取られることはなく、その列はデータ フレーム出力に表示されません。リストセルは、列を長さ1ベクトルのリストとして読み込みます。このベクトルは、col_types = NULLの型推測ロジックを使用して、セルごとに型指定されます。

na = “”

欠損値として解釈する文字列の文字ベクトルを指定します。
既定では、readxlは空白セルを欠落データとして扱います。

trim_ws = TRUE

先頭と末尾の空白はトリミングするかどうかを指定します。

skip = 0

読み取る前にスキップする最小行数を指定します。
先頭の空の行は自動的にスキップされるため、これは下限です。範囲が指定されている場合は無視されます。

n_max = Inf

読み取るデータ行の最大数を指定します。
末尾の空の行は自動的にスキップされるため、これは返されるティブルの行数の上限です。範囲が指定されている場合は無視されます。

guess_max = min(1000, n_max)

列タイプの推測に使用するデータ行の最大数を指定します。

progress = readxl_progress()

プログレススピナーを表示するかどうかを指定します。
既定では、スピナーは、ドキュメントを編むコンテキストの外部で、呼び出しが数秒以上実行される可能性がある対話型セッションでのみ表示されます。

.name_repair = “unique”

列名の処理を指定します。
tibble::as_tibble()に渡されます。既定では列名が空ではなく、一意であることが保証されます。

read_xlsx()の戻り値

read_xlsx()の戻り値はtibbleです。

次は、readxlにあらかじめ格納されているdatasets.xlsxをread_xlsx()を使用してデータフレームに読み込むサンプルになります。


library(readxl)

xlsx_file <- readxl_example("datasets.xlsx")
df <- read_xlsx(xlsx_file, 1)

df |> str()

tibble [150 × 5] (S3: tbl_df/tbl/data.frame)
 $ Sepal.Length: num [1:150] 5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ...
 $ Sepal.Width : num [1:150] 3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ...
 $ Petal.Length: num [1:150] 1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ...
 $ Petal.Width : num [1:150] 0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ...
 $ Species     : chr [1:150] "setosa" "setosa" "setosa" "setosa" ...

df |> head()

# A tibble: 6 × 5
  Sepal.Length Sepal.Width Petal.Length Petal.Width Species
                                  
1          5.1         3.5          1.4         0.2 setosa 
2          4.9         3            1.4         0.2 setosa 
3          4.7         3.2          1.3         0.2 setosa 
4          4.6         3.1          1.5         0.2 setosa 
5          5           3.6          1.4         0.2 setosa 
6          5.4         3.9          1.7         0.4 setosa 
R入門 readxlによるxlsxファイルの読み込み