将R输出导出到Excel

btxsgosb  于 2022-12-01  发布在  其他
关注(0)|答案(8)|浏览(315)

我喜欢使用R进行统计分析,但发现很难比较不同模型的输出。
是否有任何方法,我们可以导出输出到excel,使其更具可读性(使用一些格式,如科学到数字符号,条件格式等)?
根据@42 How to Copy Summary() output from R to Excel的建议,我尝试了capture.output(),但它不能正常工作。我搜索了很多,但没有找到解决方案。

nimxete2

nimxete21#

使用包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)
7nbnzgx9

7nbnzgx92#

如果你试图导出summary函数的输出,尝试以下方法

write.csv(summary(data_frame),"output.csv")
lyfkaqu1

lyfkaqu13#

不久前我也遇到了同样的问题,于是开始使用stargazer软件包。它不能将输出输出导出到Excel,但可以制作漂亮的HTML、Latex和ASCII表格,这些表格可以复制粘贴到Excel中。在我看来,这个软件包的优势在于它允许快速创建一个比较不同模型的表格。
更多信息:https://cran.r-project.org/web/packages/stargazer/vignettes/stargazer.pdf

2hh7jdfx

2hh7jdfx4#

正如@David_B所说,stargazer包对于简单的表来说真的很不错,可以输出到txt,html。
如果您想将 Dataframe 输出为Excel文件,请查看xlsx包。
请注意,xlsx不适用于dplyr tbl_df,您需要将其定义为 Dataframe ,例如

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

mfpqipee5#

我提出了一个简单的解决方案,通过剪贴板。函数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 =银河系最普通的代码;^),它的主要工作是在列中放置数字。下面的一个稍微详细的版本使用了一组短语,其中包括空格,但在输出中应该保持为一个整体(即不应该通过插入制表符来分割)。

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)

希望这是有用的,最好的祝愿
克莱克斯

xv8emn3q

xv8emn3q6#

您可以使用write.csv()write.csv2()将数据写入.csv文件。CSV文档可以在Excel中打开,如果您要编辑格式等,则可以另存为.xls。
这不是一个解决方案,而是运行options(scipen=100),它将R配置为不使用科学记数法,所以当你查看 Dataframe 时,你会看到常规十进制形式的数值。

n1bvdmb6

n1bvdmb67#

很久以前,我问过这个问题,因为我很好奇如何从R中不同模型的输出中获得可供出版的结果和表格。
后来,我发现了许多漂亮的方法来做到这一点,甚至写了一个LinkedIn post大约相同。今天,有人问我同样的问题&它点击了我的想法,我应该回答这个问题,所以太多的R用户可能不知道。

SPSS用户通常会寻找可以粘贴到excel/word或pdf中的表格格式。

以下是可用的选项👇:
1.扫帚包
https://cran.r-project.org/web/packages/broom/vignettes/broom.html
扫帚包接收R中内置函数(如lm、nls或t.test)的杂乱输出,并将它们转换为整洁的tibble。
broom::tidy()_它构造一个tibble,用于汇总模型的统计结果。这包括回归中每个项的系数和p值、聚类分析应用程序中的每个聚类信息或多测试函数的每个测试信息broom::augment()_向建模的原始数据添加列。这包括预测、残差和聚类分配broom::glance()_它构造模型的简明单行汇总。这通常包含为整个模型计算一次的值,如R^2、调整后的R^2和残差标准误差。

  1. gt summary包提供演示就绪的数据摘要和分析结果表
    1和2都是我的最爱
  2. sj绘图包https://strengejacke.wordpress.com/2014/02/20/no-need-for-spss-beautiful-output-in-r-rstats/
    1.带标签https://gdemin.github.io/expss/的表的expss包
  3. r2 spss数据包https://cran.r-project.org/web/packages/r2spss/vignettes/r2spss-intro.pdf
    一些屏幕截图可能会有帮助。
    第一次
l0oc07j2

l0oc07j28#

我使用了“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

相关问题