web-dev-qa-db-ja.com

R出力をExcelにエクスポート

統計分析にRを使用するのが好きですが、異なるモデルの出力を比較することは困難です。

何か方法はありますか?Excelに出力をエクスポートして読みやすくすることができます(科学的な数値表記、条件付き書式などの書式を使用して)?

@ 42 Summary()の出力をRからExcelにコピーする方法 で示唆されているように、capture.output()を試しましたが、正しく機能しません。よく検索しましたが、解決策が見つかりませんでした。

5
Dr Nisha Arora

しばらく前に同じ問題が発生し、パッケージstargazerの使用を開始しました。出力をExcelにエクスポートしませんが、Nice HTML、Latex、およびASCIIテーブルをExcelにコピーして貼り付けることができます。パッケージの強みは、すぐに作成できることです。異なるモデルを比較する表。

詳細: https://cran.r-project.org/web/packages/stargazer/vignettes/stargazer.pdf

1
yoland

パッケージ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)
5
IJH

summary関数の出力をエクスポートしようとしている場合は、これを試してください

write.csv(summary(data_frame),"output.csv")
2
user2100721

@David_Bが言ったように、stargazerパッケージは単純なテーブルには本当に素晴らしいもので、txt、htmlに出力できます。

データフレームをExcelファイルとして出力する場合は、xlsxパッケージをご覧ください。

xlsxdplyr tbl_dfでは機能しないため、データフレームとして定義する必要があることに注意してください。

write.xlsx (x = as.data.frame(df), file = "foo.xlsx")
2
sorearm

クリップボードを介して簡単なソリューションを提案します。関数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)

これがお役に立てば幸いです

クレクス

1
Kleks

write.csv()またはwrite.csv2()を使用して、.csvファイルにデータを書き込むことができます。書式設定などを編集する場合は、CSVドキュメントをExcelで開き、.xlsとして保存できます。

これは解決策ではありませんが、options(scipen=100)を実行します。これにより、科学表記法を使用しないようにRが構成されます。そのため、データフレームを表示すると、数値が通常の10進数形式で表示されます。

0
A. Stam

「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

0
john