Rで復習:エクセルファイルの操作に便利な「openxlsx」パッケージ


エクセルファイルの操作に便利な「openxlsx」パッケージのコマンドを再紹介です。読み込み、書き出し、体裁の調整など大変便利なパッケージです。

パッケージバージョンは3.0.0。windows 7およびOS X 10.11.5のR version 3.3.1で確認しています。

追記:plotやggplot2パッケージの出力をシートに追加するinsertPlotコマンド

パッケージのインストール

下記コマンドを実行してください。windowsはRtools、MACはXcodeが未インストールの場合、コマンド実行前にインストールが必要です。

#パッケージのインストール
install.packages("openxlsx")

実行コマンドの紹介

詳細はコマンド、パッケージのヘルプを確認してください。

###xlsxファイルの読込み#####################################
#パッケージの読み込み
library("tcltk")
library("openxlsx")
#xlsxファイルファイルを選択
XLPath <- paste0(as.character(tkgetOpenFile(title = "エクセルファイルを選択",
                                            filetypes = '{"エクセルファイル" {".xlsx" | ".xls"}}',
                                            initialfile = c("*.*"))), collapse = " ")
#xlsxファイルの読み込み:read.xlsxコマンド
#読み込むシートを指定:sheetオプション
XLData <- read.xlsx(XLPath, sheet = 1)
#########################################################

###シンプルにxlsxファイルを保存##############################
#パッケージの読み込み
library("tcltk")
library("openxlsx")
#保存場所を指定
setwd(paste(as.character(tkchooseDirectory(title = "エクセルファイルの保存場所を選択"),
                         sep = "", collapse ="")))
#xlsxファイルの保存:write.xlsxコマンド
#createWorkbook,addWorksheet,writeData,saveWorkbookコマンドのオプションの利用が可能
#ファイル名を設定:fileオプション
write.xlsx(iris, file = "Test.xlsx", sheetName = "iris")

#list clsassに複数データを格納して一括保存も可能
#list格納時にsheetNameを付与
DataList <- list("Iris" = iris, "Cars" = cars)
write.xlsx(DataList, file = "Test2.xlsx")
#########################################################

###データの体裁を整えてエクセルファイルに書き出し################
###データの準備#####
data(cars)
cars <- data.frame(cars, "speed/dis" = cars[, 1] / cars[, 2])
########

#パッケージの読み込み
library("tcltk")
library("openxlsx")

#ワークブックの作成:createWorkbコマンド
NewWb <- createWorkbook()

#シートを追加:addWorksheetコマンド
#ワークブックを指定:wbオプション
#シート名を設定:sheetNameオプション
#タブ色を指定:tabColourオプション
addWorksheet(wb = NewWb, sheetName = "Cars", tabColour = "red")
addWorksheet(wb = NewWb, sheetName = "Cars2", tabColour = "blue")

#ワークブックにデータを書き込み:writeDataコマンド
#書き込むシートを指定:sheetオプション;番号またはシート名
#書き込むデータを指定:xオプション
#書き込み開始位置を設定:xyオプション;c(startCol,startRow)
#罫線の指定:bordersオプション;"none","surrounding","rows","columns","all"が設定可能
#線種の指定:borderStyleオプション;"none","thin","medium","dashed","dotted",
#"thick","double","hair","mediumDashed","dashDot","mediumDashDot","dashDotDot",
#"mediumDashDotDot","slantDashDot"が設定可能
#colNames,rowNamesの書き込み:初期値;colNames:TRUE,rowNames:FALSE
writeData(wb = NewWb, sheet = 1, x = cars)
writeData(wb = NewWb, sheet = 2, x = cars, xy = c(3, 5),
          borders = "rows", borderColour = "red", borderStyle = "mediumDashed")

#ウィンドウ枠の固定:freezePaneコマンド
#先頭行,列の固定:firstRowオプション,firstColオプション;初期値:FALSE
#範囲を指定し行,列の固定:firstActiveRowオプション,firstActiveColオプション
freezePane(wb = NewWb, sheet = 1,
           firstRow = TRUE, firstCol= FALSE)
freezePane(wb = NewWb, sheet = 2,
           firstActiveRow = 6, firstActiveCol = 3)

#セル体裁を調整:createStyleコマンド
#文字サイズ:fontSizeオプション;初期値:11
#文字色:fontColourオプション;初期値:black
#枠線:borderオプション;"Top","Bottom","Left","Right","TopBottom",
#"LeftRight","TopLeftRight","TopBottomLeftRight"が設定可能
#枠線色:borderColourオプション
#枠線種:オプション;"none","thin","medium","dashed","dotted",
#"thick","double","hair","mediumDashed","dashDot","mediumDashDot","dashDotDot",
#"mediumDashDotDot","slantDashDot"が設定可能
#セル塗:fgFillオプション
#文字横位置:halignオプション:"left","right","center"
#文字縦位置:valignオプション:"top","center","bottom"
#文字スタイル:textDecorationオプション:"bold","strikeout","italic","underline","underline2"
#文字の回転:textRotationオプション:数値で指定
#文字の書式:numFmtオプション:"GENERAL","NUMBER","CURRENCY","ACCOUNTING","DATE",
#"LONGDATE","LONGDATE","PERCENTAGE","FRACTION","SCIENTIFIC","COMMA",
#"0.00"で丸め指示が設定可能
Sheet1Style <- createStyle(fgFill = "red1", halign = "center", valign = "center",
                           textRotation = 45, numFmt = "PERCENTAGE")
Sheet2Style <- createStyle(bgFill = "lightblue", textDecoration = "underline2")

#セル体裁を適応:addStyleコマンド
#createStyleコマンドで作成したオブジェクトを指定:styleオプション
#行列範囲を指定:cols,rowsオプション
#cols,rowsの範囲が同じじゃない場合:gridExpandオプション:TRUEに設定
addStyle(wb = NewWb, sheet = 1, style = Sheet1Style,
         rows = 1:3, cols = 1:3, gridExpand = FALSE)
addStyle(wb = NewWb, sheet = 1, style = Sheet1Style,
         rows = 10:51, cols = 1:3, gridExpand = TRUE)

#セル体裁を条件で適応:conditionalFormattingコマンド
#条件設定:ruleオプション
conditionalFormatting(wb = NewWb, sheet = 2, style = Sheet2Style,
                      cols = 5, rows = 6:55, rule = "<0.6")
#スパークラインを設定
conditionalFormatting(wb = NewWb, sheet = 1, cols = 1:3,
                      rows = 1:51, type = "databar")

#列の幅を指定:setColWidthsコマンド
#幅を指定:widthsオプション;数値または"auto"
setColWidths(wb = NewWb, sheet = 1,
             cols = 1:3, widths = "auto")

#セルグリッドの表示:コマンド
#表示設定:showGridLinesオプション
showGridLines(wb = NewWb, sheet = 1, showGridLines = FALSE)

#plotやggplot2パッケージの出力をシートに追加
#例ではggplot2パッケージ
library("ggplot2")
#BoxPlotを作成
BoxPlot <- ggplot(cars, aes(x = factor(speed), y = dist, fill = factor(speed)))
BoxPlot + geom_boxplot()
#insertPlotコマンド
#サイズを指定:width,heightオプション;単位はインチ
#単位を変更する場合はunitsオプションを使用
insertPlot(wb = NewWb, sheet = 2,
           width = 15, height = 15,
           units = "cm", xy= c("G", 7))

#xlsxファイルで保存:saveWorkbookコマンド
#保存場所を指定
setwd(paste(as.character(tkchooseDirectory(title = "エクセルファイルの保存場所を選択"),
                         sep = "", collapse ="")))
saveWorkbook(wb = NewWb, file = "TestCar.xlsx", overwrite = TRUE)

出力例

例1
openxlsx
例2
insertplot


少しでも、あなたのウェブや実験の解析が楽になりますように!!

スポンサードリンク

おすすめコンテンツ


スポンサードリンク