我正试图让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中的所有内容相加,找出均值,标准差,最小值和最大值。
答案 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)
对于此示例,我将使用您提供的Company1
和Company2
的示例数据创建数据框列表:
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更改表中的信息。