在 R 中使用 Stargazer 将 csv 直接导出到 Excel

Using Stargazer in R to export csv direct into Excel

我正在尝试让 stargazer R 包吐出一个巨大的 .csv。 43 家不同公司的描述性统计 table Excel。

我有 43 个不同的数据框,这些数据框与 43 个不同公司的会议有关。我目前正在尝试从这些数据帧中的每一个创建一个输出,以列出会议变量的平均值、八月变量的标准差、最大值、最小值和总数。下面是公司 1 的可重现示例,"J" 代表七月,"A" 代表八月,"S" 代表九月,"N" 代表十一月:

J   A    S   N
29  2   30   2
20  3   30  10
30  10  20  30
40  20  10  21
10  30  13  14

公司 2 是

J   A   S   N
14  5   15  19
10  10  17  10
30  14  18  11
10  20  19  9
10  10  20  4

以下是我使用的代码:

stargazer(Company1[c("J", "A", "S", "N")], type = "text", 
      title="Descriptive statistics Company 1", digits=1, out="table1.txt",
      covariate.labels= c("J", "A", "S", "N"))

stargazer(Company2[c("J", "A", "S", "N")], type = "text", 
      title="Descriptive statistics AugustMartin", digits=1, out="table1.txt",
      covariate.labels= c("J", "A", "S", "N"))

...
stargazer(Company43[c("J", "A", "S", "N")], type = "text", 
      title="Descriptive statistics AugustMartin", digits=1, out="table1.txt",
      covariate.labels= c("J", "A", "S", "N"))

我正在尝试让 stargazer 包从公司 1 到公司 43 获取所有描述性统计数据,保留标题以便我知道哪些描述性统计数据属于哪个公司并将它们转储到方便的 CSV sheet 在 excel。

当我尝试使用下面的代码时

library(xlsx)
# Create a single summary table and write to an Excel file
tab1 = t(sapply(Company1, function(x) {
data.frame(N=length(x), Mean=mean(x), `St. Dev.`=sd(x), Min=min(x),    
Max=max(x))
}))
write.xlsx(tab1, "Company Data.xlsx", sheetName="Company1", row.names=FALSE)

我得到以下信息:

Col 1   Col2     Col3    Col4
51.34   #N/A    51.34   51.34
7.58    #N/A    7.58    7.58
26.99   #N/A    26.99   26.99
49.74   #N/A    49.74   49.74
34.84   #N/A    34.84   34.84
54.84   #N/A    54.84   54.84
18.5    #N/A    18.5    18.5  
49.34   #N/A    49.34   49.34
49.26   #N/A    49.26   49.26

它取的是每一行的平均值,而不是指定列的平均值。理想情况下,它会将第 1 列中的所有内容相加,找到平均值、标准差、最小值和最大值。

stargazer 似乎不是正确的工具。相反,您可以只创建一个包含所需摘要数据的数据框,然后将其写入 Excel 文件。下面我提供了单个数据框和一堆数据框的示例。

保存单个数据框的摘要

library(xlsx)

# Create a single summary table and write to an Excel file
tab1 = t(sapply(Company1, function(x) {
  data.frame(N=length(x), Mean=mean(x), `St. Dev.`=sd(x), Min=min(x), Max=max(x))
}))

write.xlsx(tab1, "Company Data.xlsx", sheetName="Company1", row.names=FALSE)

保存多个数据帧的摘要

下面是将一堆汇总表写入文件的方法。理想情况下,您会将数据框读入列表,然后对列表的每个元素进行操作。这样您就不必为每个单独的数据框重复相同的代码。

要创建数据框列表,您可以像这样读入数据:

# Get names of files to read
file.names = list.files(pattern="Company.*csv")
df.list = sapply(file.names, read.csv)

对于此示例,我将使用您提供的 Company1Company2 的样本数据创建一个数据框列表:

df.list = list(Company1=Company1, Company2=Company2)

# Calculate summary statistics for each data frame and write to an Excel worksheet
sapply(names(df.list), function(df) {

  tab1 = t(sapply(df.list[[df]], function(x) {
    data.frame(N=length(x), Mean=mean(x), `St. Dev.`=sd(x), Min=min(x), Max=max(x))
  }))

  write.xlsx(tab1, "Company Data.xlsx", sheetName=df, row.names=FALSE, append=TRUE)
})

如果你不需要自动化你可以做的过程:

stargazer(., type = "html")

其中 . 是其他参数。 然后你可以将 table(例如 here)和 copy-paste 编译成 Excel。请确保将所有单元格的格式设置为文本并粘贴而不设置格式,以防止 Excel 更改 table.

上的信息。