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

时间:2016-01-15 21:54:09

标签: r stargazer

我正试图让stargazer R 包吐出一个巨大的.csv。 43个不同公司的描述性统计表进入Excel。

我有43个不同的数据框,涉及43个不同公司的会议。我目前正在尝试从这些数据框中的每一个创建输出,以列出会议变量的平均值,变量8月的标准偏差,最大值,最小值和总数。对于公司1来说,可重复的例子如下:" J"站在7月," 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,保留标题,以便我知道哪些描述性统计信息属于哪个公司,并将它们转储到excel中方便的CSV表格中。

当我尝试使用以下代码时

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

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

2 个答案:

答案 0 :(得分: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)
})

答案 1 :(得分:0)

您不需要自动化您可以执行的过程:

dash_table.DataTable( id='raw_data', data=[], css=[{"selector": ".dash-table-container tr", "rule":'max-height: "15px"; height: "15px"; '}])

其中stargazer(., type = "html")是其他参数。 然后,您可以编译表(例如here),然后将其复制粘贴到Excel中。只需确保将所有单元格设置为文本格式并粘贴而不进行格式化,以防止Excel更改表中的信息。