web-dev-qa-db-fra.com

Exporter la sortie R vers Excel

J'aime utiliser R pour l'analyse statistique, mais je trouve difficile de comparer les résultats de différents modèles. 

Existe-t-il un moyen d'exporter la sortie vers Excel pour la rendre plus lisible (en utilisant un formatage tel que la notation scientifique en notation numérique, le formatage conditionnel, etc.)?

Comme suggéré par @ 42 Comment copier la sortie de Summary () de R vers Excel , j'ai essayé capture.output () mais cela ne fonctionne pas correctement. J'ai beaucoup cherché, je n'ai pas trouvé de solution. 

2
Dr Nisha Arora

J'ai eu le même problème il y a quelque temps et j'ai commencé à utiliser le paquetage stargazer. Il n'exporte pas la sortie vers Excel, mais crée des tableaux Nice HTML, Latex et ASCII pouvant être copiés-collés dans Excel. À mon avis, la force du package réside dans le fait qu’il permet de créer rapidement un tableau comparant différents modèles.

Plus d'infos: https://cran.r-project.org/web/packages/stargazer/vignettes/stargazer.pdf

1
yoland

En utilisant le package XLConnect, vous pouvez écrire la sortie R dans des fichiers Excel.

Voici un exemple où j'écris un modèle et envoie le résumé à 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)
4
IJH

Comme @David_B l'a dit, le paquetage stargazer est vraiment sympa pour les tables simples et peut sortir en txt, html.

Si vous souhaitez exporter votre image de données sous forme de fichier Excel, consultez le package xlsx.

Sachez que xlsx ne fonctionne pas avec un dplyr tbl_df et vous devrez le définir comme un cadre de données, par exemple.

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

Vous pouvez écrire des données dans un fichier .csv à l'aide de write.csv() ou write.csv2(). Les documents CSV peuvent être ouverts dans Excel et enregistrés au format .xls si vous souhaitez modifier le formatage, etc.

Et ce n'est pas une solution, mais lancez options(scipen=100). Cela configure R pour qu'il n'utilise pas de notation scientifique. Ainsi, lorsque vous affichez une image de données, vous voyez les valeurs numériques sous forme décimale régulière.

0
A. Stam

Si vous essayez d’exporter la sortie de la fonction summary, essayez ceci.

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

Je propose une solution simple via le presse-papier. Function tabout envoie la sortie normale à la console, ainsi qu'une version délimitée par des tabulations dans le presse-papiers. Ensuite, vous pouvez directement coller, par exemple, dans 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)

Bien que ce soit mocog = code le plus ordinaire de la galaxie; ^), il s’agit principalement de placer des nombres dans des colonnes. Une version légèrement plus élaborée ci-dessous utilise un ensemble de phrases qui incluent des blancs, mais qui devraient être conservés en un seul morceau dans la sortie (c’est-à-dire qu’ils ne devraient pas être scindés en insérant des tabulations).

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)

J'espère que cela vous sera utile, meilleurs voeux

Kleks

0
Kleks

J'ai utilisé le paquet "readxl". Cela a fonctionné à merveille pour exporter des données vers Excel. 

install.packages("readxl")
library(readxl)
input <- read_Excel("data/mydata.xlsx")

Vous pouvez choisir d’exporter des données dans SAS, une base de données ou en ligne en utilisant les options fournies ici: https://www.blue-granite.com/blog/importing-and-exporting-getting-data-into-and-out-of -r

0
john