3

私はよく相関行列を使った論文を書いています。相関行列を xls または xlsx 形式で Excel にエクスポートできるようにしたいと考えています。また、しきい値 (> .2 など) を満たす相関関係を太字で書式設定したいと思います。XLConnect がその機能を提供するのではないかと考えていました。

例を簡単にするために、データ フレームが次のようであると仮定し、5 より大きいすべてのセルを太字にしたいとします。

x <- data.frame(matrix(1:9, nrow = 3))
# > x
#   X1 X2 X3
# 1  1  4  7
# 2  2  5  8
# 3  3  6  9

余談ですが、マークダウンのセルボールディングのソリューションが提案されていることに注意してください。

私もこの答えを見つけましたが、データフレームとフォーマットルールを取得するという一般的なタスクに適応させるにはかなりの時間がかかるという点で、非常に一般的な解決策ではありません。

条件付き書式を使用して xlsx 経由でデータ フレームを Excel にエクスポートする

4

1 に答える 1

3

@jota's answer hereから適応した次の関数を作成しました

xlsx_boldcells <- function(x, matches, file = "test.xlsx", sheetname = "sheet1") {
    # x data.frame or matrix
    # matches: logical data.frame or matrix of the same size indicating which cells to bold
    # copy data frame to work book and load workbook
    require(xlsx)
    write.xlsx(x, file, sheetName=sheetname)
    wb <- loadWorkbook(file)              

    # specify conditional formatting
    # Note: this could be modified to apply different formatting
    # see ?CellStyle
    fo <- Font(wb, isBold = TRUE)  
    cs <- CellStyle(wb, font=fo)  

    # Get cell references
    sheets <- getSheets(wb)               # get all sheets
    sheet <- sheets[[sheetname]]          # get specific sheet
    rows <- getRows(sheet, rowIndex=2:(nrow(x)+1))  # get rows
    cells <- getCells(rows, colIndex = 2:(ncol(x)+1))  

    # Matches to indexes
    indm <- data.frame(which(matches, arr.ind = TRUE, useNames = FALSE)) 
    names(indm) <- c("row", "col")
    # +1 required because row and column names occupy first rows and columns
    indm$index <- paste(indm$row + 1, indm$col + 1, sep = ".")

    # apply cell style
    lapply(indm$index, function(ii) setCellStyle(cells[[ii]],cs))

    # save workbook
    saveWorkbook(wb, file)
}

したがって、提案された問題に適用できます。

 xlsx_boldcells(x, x > 5)

降伏:

太字のExcelシート

または、次のように、一般的な相関問題 (つまり、.6 より大きい大きな相関を太字で示す) に適用することもできます。

data(mtcars)
cors <- round(cor(mtcars), 2)
xlsx_boldcells(cors, abs(cors) > .6 & cors!=1, file = "cormatrix.xlsx")

xlsx を使用した太字のセル形式の相関関係

于 2016-08-01T02:58:37.710 に答える