如何在R中的stargazer表中手动移动Observations行并堆叠条目?

2ic8powd  于 2023-04-18  发布在  其他
关注(0)|答案(2)|浏览(99)

bounty还有4天到期。回答此问题可获得+100声望奖励。user321627希望引起更多关注此问题。

我有一个使用stargazer包创建的R中的回归表示例:

ctl <- c(4.17,5.58,5.18,6.11,4.50,4.61,5.17,4.53,5.33,5.14)
trt <- c(4.81,4.17,4.41,3.59,5.87,3.83,6.03,4.89,4.32,4.69)
group <- gl(2, 10, 20, labels = c("Ctl","Trt"))
weight <- c(ctl, trt)
lm.D9 <- lm(weight ~ group)
se1 <- round(coeftest(lm.D9, vcov = vcovHC(lm.D9, type="HC1"))[,2],4)
stargazer(mod1,
          se=list(se1),keep.stat="n", type="text",
          add.lines = list(c("Method","OLS"),
                           c("HR Robust","True True True")))

Stargazer输出:

========================================
                 Dependent variable:    
             ---------------------------
                       workedm          
----------------------------------------
morekids              -0.115***         
                       (0.002)          
                                        
Constant              0.575***          
                       (0.001)          
                                        
----------------------------------------
Method                   OLS            
HR Robust               True True True            
Observations           266,928          
========================================
Note:        *p<0.1; **p<0.05; ***p<0.01

我想将Observations行移到MethodHR Robust上面。此外,我想缩进每个"True True True"部分,以便每个True都在另一个的顶部:

...
Method                   OLS            
HR Robust               True 
                        True 
                        True            
Observations           266,928   
...

有办法做到这一点吗?谢谢!

js81xvg6

js81xvg61#

stargazer方便地将其输出作为字符向量返回,这是不可见的。这允许我们将输出分配给一个变量,然后根据您的需要对其进行后处理。
例如,我们可以将原始文件转换为所需的输出,如下所示:

star = stargazer(mod1, se=list(se1),keep.stat="n", type="text",
          add.lines = list(c("Method","OLS"),
                           c("HR Robust","True True True")))

meth.row = grep('^Method', star)
obs.row  = grep('^Observations', star)
HR.row =  grep('^HR Robust', star)

star = c(
  star[1:(meth.row-1L)], 
  star[obs.row], 
  star[meth.row],
  new.hr <- sub('True True True','     True     ',star[HR.row]),
  rep(sub('HR Robust', '         ', new.hr), 2),
  star[setdiff((HR.row+1):length(star), obs.row)]
)
cat(star, sep ='\n')

它产生

========================================
                 Dependent variable:    
             ---------------------------
                          y             
----------------------------------------
x                       4.004           
                                        
                                        
Constant              -0.235***         
                       (0.017)          
                                        
----------------------------------------
Observations             100            
Method                   OLS            
HR Robust               True            
                        True            
                        True            
========================================
Note:        *p<0.1; **p<0.05; ***p<0.01
f0brbegy

f0brbegy2#

您可以使用table.layout参数来自定义要在输出中显示的元素的顺序:
一个字符串,指定表格的哪些部分应按用户提供的顺序包含在输出中。字符串中的每个字母表示表格的特定部分,由表格布局字符指定。例如,table.layout =“#tn”将仅报告型号、系数表和注解。
为了得到彼此下面的TRUE,你可以简单地创建两个向量,其中有一些空值,以使它们在每个下面。下面是一些可重复的代码(注意我使用se 1作为模型作为例子):

library(stargazer)
library(lmtest)
library(sandwich)
group <- gl(2, 10, 20, labels = c("Ctl","Trt"))
weight <- c(ctl, trt)
lm.D9 <- lm(weight ~ group)
se1 <- round(coeftest(lm.D9, vcov = vcovHC(lm.D9, type="HC1"))[,2],4)
stargazer(lm.D9,
          se=list(se1), keep.stat="n", type="text",
          add.lines = list(c("Method","OLS"),
                           c("HR Robust","True"),
                           c("", "True"),
                           c("", "True")),
          table.layout = "=ld-t-sa=n")
#> 
#> ========================================
#>                  Dependent variable:    
#>              ---------------------------
#>                        weight           
#> ----------------------------------------
#> groupTrt               -0.371           
#>                        (0.311)          
#>                                         
#> Constant              5.032***          
#>                        (0.184)          
#>                                         
#> ----------------------------------------
#> Observations             20             
#> Method                   OLS            
#> HR Robust               True            
#>                         True            
#>                         True            
#> ========================================
#> Note:        *p<0.1; **p<0.05; ***p<0.01

创建于2023-04-15带有reprex v2.0.2
正如你所看到的,我们现在有了顺序观察,方法和HR稳健性。
您可以在这里找到用于创建订单的字符和每个描述:

Table Layout Characters
"-" single horizontal line
"=" double horizontal line
"-!"    mandatory single horizontal line
"=!"    mandatory double horizontal line
"l" dependent variable caption
"d" dependent variable labels
"m" model label
"c" column labels
"#" model numbers
"b" object names
"t" coefficient table
"o" omitted coefficient indicators
"a" additional lines
"n" notes
"s" model statistics

相关问题