多个表格中的 stargazer() 标题

问题描述

我有一个数据集,其中包含一些要汇总的变量和一个组成员资格指标

df <- data.frame(var1 = rnorm(100),var2 = rnorm(100),group = rep(c("A","B"),each = 50))

我想分别为 AB生成汇总表。我们可以使用 dplyrpurrr 执行此操作,如下所示:

library(purrr)
library(dplyr)

df %>% split(. $group) %>% walk(~ stargazer(.,type = "text",title = unique(df$group)))


A
==========================================================
Statistic N  Mean  St. Dev.  Min   Pctl(25) Pctl(75)  Max 
----------------------------------------------------------
var1      50 0.371  1.044   -2.350  -0.251   1.043   2.545
var2      50 0.014  0.849   -2.212  -0.407   0.584   1.710
----------------------------------------------------------

A
===========================================================
Statistic N   Mean  St. Dev.  Min   Pctl(25) Pctl(75)  Max 
-----------------------------------------------------------
var1      50 0.016   1.246   -2.432  -1.107   0.879   2.551
var2      50 -0.031  0.975   -2.713  -0.682   0.465   2.022
-----------------------------------------------------------

我天真地试图通过将 unique(df$group) 移交给 titlestargazer() 参数来将组名称引入为表格标题。当我们这样做时,只使用提供的表格标题向量的第一个元素,因此所有表格都有标题 A。是否有导致正确表格标题解决方案?

解决方法

您只需按如下方式更改现有代码即可完成此操作:

df %>% split(. $group) %>% walk(~ stargazer(.,type = "text",title = .$group))

unique(df$group) 替换为 .$group 它将起作用。不要忘记为 stargazer 添加库调用。原因是通过使用 unique(df$group) 将长度为 2 的字符向量传递给 stargazer 并且根据定义它只接受第一个参数。通过使用 .$group,它取决于相应的组,您将获得正确的标题。

library(purrr)
library(dplyr)
library(stargazer)

df <- data.frame(var1 = rnorm(100),var2 = rnorm(100),group = rep(c("A","B"),each = 50))

df %>% split(. $group) %>% walk(~ stargazer(.,title = .$group))
    
A
===========================================================
Statistic N   Mean  St. Dev.  Min   Pctl(25) Pctl(75)  Max 
-----------------------------------------------------------
var1      50 -0.122  1.019   -3.582  -0.671   0.511   2.223
var2      50 0.082   1.077   -2.780  -0.702   0.841   2.203
-----------------------------------------------------------

B
===========================================================
Statistic N   Mean  St. Dev.  Min   Pctl(25) Pctl(75)  Max 
-----------------------------------------------------------
var1      50 0.023   0.971   -2.431  -0.706   0.609   2.299
var2      50 -0.041  1.039   -3.807  -0.626   0.718   1.950
-----------------------------------------------------------
,

您可以使用 iwalk 来传递数据和列表名称。

library(tidyverse)
library(stargazer)

df %>% 
  split(. $group) %>% 
  iwalk(~stargazer(.x,title = .y))

A
===========================================================
Statistic N   Mean  St. Dev.  Min   Pctl(25) Pctl(75)  Max 
-----------------------------------------------------------
var1      50 -0.064  0.890   -2.265  -0.744   0.734   1.699
var2      50 -0.130  1.003   -2.404  -0.752   0.581   1.930
-----------------------------------------------------------

B
==========================================================
Statistic N  Mean  St. Dev.  Min   Pctl(25) Pctl(75)  Max 
----------------------------------------------------------
var1      50 0.086  0.823   -1.737  -0.476   0.742   1.736
var2      50 0.167  1.178   -1.709  -0.670   0.898   2.677
----------------------------------------------------------