統計分析にRを使用するのが好きですが、異なるモデルの出力を比較することは困難です。
何か方法はありますか?Excelに出力をエクスポートして読みやすくすることができます(科学的な数値表記、条件付き書式などの書式を使用して)?
@ 42 Summary()の出力をRからExcelにコピーする方法 で示唆されているように、capture.output()を試しましたが、正しく機能しません。よく検索しましたが、解決策が見つかりませんでした。
しばらく前に同じ問題が発生し、パッケージstargazer
の使用を開始しました。出力をExcelにエクスポートしませんが、Nice HTML、Latex、およびASCIIテーブルをExcelにコピーして貼り付けることができます。パッケージの強みは、すぐに作成できることです。異なるモデルを比較する表。
詳細: https://cran.r-project.org/web/packages/stargazer/vignettes/stargazer.pdf
パッケージXLConnect
を使用して、R出力をExcelファイルに書き込むことができます。
モデルを作成して概要をExcelに送信する例を次に示します。
library(XLConnect)
dat <- data.frame(rsp = rnorm(100, 0, 1),
pred1 = rnorm(100, 0, 1),
pred2 = rnorm(100, 0, 1))
model <- lm(rsp ~ pred1 + pred2, data = dat)
writeWorksheetToFile("model1.xlsx",
data = summary(dat),
sheet = "summary",
header = TRUE,
clearSheets = TRUE)
summary
関数の出力をエクスポートしようとしている場合は、これを試してください
write.csv(summary(data_frame),"output.csv")
@David_Bが言ったように、stargazer
パッケージは単純なテーブルには本当に素晴らしいもので、txt、htmlに出力できます。
データフレームをExcelファイルとして出力する場合は、xlsx
パッケージをご覧ください。
xlsx
はdplyr tbl_df
では機能しないため、データフレームとして定義する必要があることに注意してください。
write.xlsx (x = as.data.frame(df), file = "foo.xlsx")
クリップボードを介して簡単なソリューションを提案します。関数taboutは、通常の出力をコンソールに送信し、そのタブ区切りバージョンをクリップボードに送信します。次に、直接貼り付けることができますExcelに。
tabout <- function(output){
print(output)
capture.output(output, file = "clipboard", append = FALSE,
type = "output", split = FALSE)
lines <- readClipboard()
for(i in 1 : 5) {lines <- gsub(" ", " ", lines, fixed=TRUE)}
lines <- gsub(" ", "\t", lines, fixed=TRUE)
writeClipboard(lines)
}
myanova <- Anova(mymodel, type="III")
tabout(myanova)
これはmocog =銀河の最も普通のコード; ^)ですが、列に数値を配置する主な仕事をします。以下のもう少し手の込んだバージョンでは、空白を含むフレーズのセットを使用していますが、出力では1つのピースに保持する必要があります(つまり、タブを挿入して分割しないでください)。
glmphrases <- c(
"Sum Sq", "F value", "Std. Error", "t value", "test statistic",
"test stat", "approx F", "num Df", "den Df", "p adj",
" = ", " ~ ", " : ", " on ", " and ", "Signif. codes: 0",
"'***' 0.001", "'**' 0.01", "'*' 0.05", "'.' 0.1", "' ' 1"
)
tabout <- function(output, phrases = glmphrases){
# send "output" to the console and a copy to the clipboard
print(output)
capture.output(output, file = "clipboard", append = FALSE,
type = "output", split = FALSE)
lines <- readClipboard()
# collapse repeated blanks and replace with tabs
for(i in 1 : 5) {lines <- gsub(" ", " ", lines, fixed=TRUE)}
lines <- gsub(" ", "\t", lines, fixed=TRUE)
# retain each phrase in one piece and write back to clipboard
phrases.tab <- gsub(" ", "\t", phrases, fixed=TRUE)
for(i in 1 : length(phrases)){
lines <- gsub(phrases.tab[i], phrases[i], lines, fixed=TRUE)
}
writeClipboard(lines)
}
myanova <- Anova(mymodel, type="III")
tabout(myanova)
これがお役に立てば幸いです
クレクス
write.csv()
またはwrite.csv2()
を使用して、.csvファイルにデータを書き込むことができます。書式設定などを編集する場合は、CSVドキュメントをExcelで開き、.xlsとして保存できます。
これは解決策ではありませんが、options(scipen=100)
を実行します。これにより、科学表記法を使用しないようにRが構成されます。そのため、データフレームを表示すると、数値が通常の10進数形式で表示されます。
「readxl」パッケージを使用しました。データをExcelにエクスポートするのに素晴らしい働きをしました。
install.packages("readxl")
library(readxl)
input <- read_Excel("data/mydata.xlsx")
次のオプションを使用して、SAS、データベース、またはオンラインにデータをエクスポートすることを選択できます。 https://www.blue-granite.com/blog/importing-and-exporting-getting-data-into-and-out -of-r