我有一个data set,有61个观察值和2个变量。当我总结整个数据时,第二个变量的分位数,中位数,平均值和最大值有时不同于我从第二个变量汇总得到的结果。那是为什么?
data <- read.csv("testdata.csv")
head(data)
# Group.1 x
# 1 10/1/12 0
# 2 10/2/12 126
# 3 10/3/12 11352
# 4 10/4/12 12116
# 5 10/5/12 13294
# 6 10/6/12 15420
summary(data)
# Group.1 x
# 10/1/12 : 1 Min. : 0
# 10/10/12: 1 1st Qu.: 6778
# 10/11/12: 1 Median :10395
# 10/12/12: 1 Mean : 9354
# 10/13/12: 1 3rd Qu.:12811
# 10/14/12: 1 Max. :21194
# (Other) :55
summary(data[2])
# x
# Min. : 0
# 1st Qu.: 6778
# Median :10395
# Mean : 9354
# 3rd Qu.:12811
# Max. :21194
# The following code yield different result:
summary(data$x)
# Min. 1st Qu. Median Mean 3rd Qu. Max.
# 0 6778 10400 9354 12810 21190
答案 0 :(得分:1)
@ r2evans的评论是正确的,因为差异是由summary.data.frame
和summary.default
的差异引起的。
两种方法的默认值digits
为max(3L, getOption("digits") - 3L)
。如果您尚未更改选项,则评估为4L
。但是,这两种方法在格式化输出时使用不同的digits
参数,这是两种方法输出差异的原因。来自?summary
:
digits
:整数,用于signif()
(适用于summary.default
)或format()
(适用于summary.data.frame
)的数字格式。
假设我们在问题中有x
摘要统计信息的向量:
q <- append(quantile(data$x), mean(data$x), after = 3L)
q
## 0% 25% 50% 75% 100%
## 0.00 6778.00 10395.00 9354.23 12811.00 21194.00
在summary.default
中,使用signif
对输出进行格式化,digits
将输入舍入到提供的重要signif(q, digits = 4L)
## 0% 25% 50% 75% 100%
## 0 6778 10400 9354 12810 21190
的数量:
summary.data.frame
format
使用digits
,format(q, digits = 4L)
## 0% 25% 50% 75% 100%
## " 0" " 6778" "10395" " 9354" "12811" "21194"
使用digits
参数作为 sugggestion (?format
)的有效位数。显示:
4
因此,当使用默认的summary.default(data$x)
参数值summary.data.frame(data[2])
时,digits
将5位分位数舍入为4位有效数字;但summary(data[2], digits = 5L)
## x
## Min. : 0.0
## 1st Qu.: 6778.0
## Median :10395.0
## Mean : 9354.2
## 3rd Qu.:12811.0
## Max. :21194.0
summary(data$x, digits = 5L)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.0 6778.0 10395.0 9354.2 12811.0 21194.0
显示5位分位数,但没有四舍五入。
如果明确提供大于4的digits
参数,您将获得相同的结果:
df <- data.frame(a = 1e5 + 0:100)
summary(df$a)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 100000 100000 100000 100000 100100 100100
summary(df)
## a
## Min. :100000
## 1st Qu.:100025
## Median :100050
## Mean :100050
## 3rd Qu.:100075
## Max. :100100
作为默认{{1}}的两种方法差异的一个极端例子:
{{1}}