R stargazer:不同的小数

问题描述 投票:2回答:1

我在R中的stargazer输出有问题

这是我的原始数据帧:

Rank  p     LMax   10%   5%  1%   
var1  0.427  24.25 21.8 27.4 31.5
var2  0.228  7.23  11.5 12.2 16.7

观星者创造了什么:

stargazer(data_summary,summary = FALSE,digits = 3)

Rank  p      LMax   10%    5%     1%   
var1  0.427  24.250 21.800 27.400 31.500
var2  0.248  7.230  11.500 12.200 16.700

保持p的三位数很重要,但其他位数保持2位数。 digits = 2不能解决问题,因为p只有两位数。

所需的输出:

Rank  p      LMax   10%    5%     1%   
var1  0.427  24.25 21.80 27.40 31.50
var2  0.248  7.23  11.50 12.20 16.70

不知道怎么解决这个问题?

r stargazer
1个回答
1
投票

一个hacky解决方案是将您的数据帧转换为字符向量,每个向量具有适当的小数点数。

data_summary <- read.table(text = "
Rank  p     LMax   p10   p5  p1   
var1  0.427  24.25 21.8 27.4 31.5
var2  0.228  7.23  11.5 12.2 16.7", header = TRUE)

我们编写一个匿名函数,给定一个整数x(小数点数)和一个数字向量y,返回一个字符向量:

out <- mapply(function(x, y) sprintf(sprintf("%%.0%if", y), x), 
  data_summary[-1],
  c(3, 2, 2, 2, 2))
#      p       LMax    p10     p5      p1     
# [1,] "0.427" "24.25" "21.80" "27.40" "31.50"
# [2,] "0.228" "7.23"  "11.50" "12.20" "16.70"

stargazer现在为您提供所需的输出:

library(stargazer)
stargazer(data_summary_out,
          type = "text",
          summary = FALSE,
          digits = NA)
# ====================================
#   Rank   p   LMax   p10   p5    p1  
# ------------------------------------
# 1 var1 0.427 24.25 21.80 27.40 31.50
# 2 var2 0.228 7.23  11.50 12.20 16.70
# ------------------------------------
© www.soinside.com 2019 - 2024. All rights reserved.