エクセルファイルの操作に便利な「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)
出力例
少しでも、あなたのウェブや実験の解析が楽になりますように!!