R:为什么stargazer对这个数据框的最小值和最大值返回不正确?

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

我今天用stargazer做了一些基本的汇总表,并注意到一些奇怪的行为。

library(stargazer)

my_df <- data.frame(speed = c(3.00,3.20,3.00,3.20,3.10,2.90),
                    age = c(22,24,24,28,19,25))

stargazer(my_df, type="text",
          summary.stat = c("min", "mean", "max"),
          digits = 2)

输出是:

=======================
Statistic Min Mean  Max
-----------------------
speed      3  3.07   3 
age       19  23.67 28 
-----------------------

很明显 min 应该是2.90和 max 应该是3.20,因为我指定了 digits=2......我是不是失去了理智?我使用的是stargazer 5.2.2和R 3.6.3,如果这很重要的话。

r stargazer
1个回答
1
投票

这看起来很可疑,像是一种未记录的行为(也就是bug)。

我可能弄错了,但似乎函数正在检查每个变量的第一个值,以确定如何呈现最小最大结果,而忽略了 digits 参数,如果它发现任何看起来像整数的东西。例如,把第一个值从3.00改成3.10,你就会得到预期的输出。

my_df <- data.frame(speed = c(3.10,3.20,3.00,3.20,3.10,2.90),
                    age = c(22,24,24,28,19,25))

stargazer(my_df, type="text",
          summary.stat = c("min", "mean", "max"),
          digits = 2)

=========================
Statistic Min  Mean  Max 
-------------------------
speed     2.90 3.08  3.20
age        19  23.67  28 
-------------------------

我用 mtcars 数据集试了一下,得到了同样的行为。

stargazer(mtcars[,c("mpg","drat","wt","qsec")], type='text', digits=2)

=========================================================
Statistic N  Mean  St. Dev.  Min  Pctl(25) Pctl(75)  Max 
---------------------------------------------------------
mpg       32 20.09   6.03    10     15.4     22.8    34  
drat      32 3.60    0.53   2.76    3.08     3.92   4.93 
wt        32 3.22    0.98   1.51    2.58     3.61   5.42 
qsec      32 17.85   1.79   14.50  16.89    18.90   22.90
---------------------------------------------------------

head(mtcars[,c("hp","mpg","drat","wt","qsec")])
#                    hp  mpg drat    wt  qsec
# Mazda RX4         110 21.0 3.90 2.620 16.46
# Mazda RX4 Wag     110 21.0 3.90 2.875 17.02
# Datsun 710         93 22.8 3.85 2.320 18.61
# Hornet 4 Drive    110 21.4 3.08 3.215 19.44
# Hornet Sportabout 175 18.7 3.15 3.440 17.02
# Valiant           105 18.1 2.76 3.460 20.22

所以,我认为你并没有失去你的弹珠。但你应该向软件包作者报告,看看他(Marek Hlavac)怎么说。

© www.soinside.com 2019 - 2024. All rights reserved.