我今天用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,如果这很重要的话。
这看起来很可疑,像是一种未记录的行为(也就是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)怎么说。