@ r2evans' Kommentar ist richtig, dass die Diskrepanz durch Unterschiede in summary.data.frame
und summary.default
verursacht wird.
Der Standardwert digits
für beide Methoden ist max(3L, getOption("digits") - 3L)
. Wenn Sie Ihre Optionen nicht geändert haben, wird dies auf 4L
ausgewertet. Allerdings verwenden die beiden Methoden ihr Argument digits
beim Formatieren der Ausgabe unterschiedlich, was der Grund für die Unterschiede in der Ausgabe der beiden Methoden ist. Von ?summary
:
digits
: integer, für Zahlenwert-Formatierungs mit signif()
(für summary.default
) oder format()
(für summary.data.frame
) verwendet.
Sagen wir den Vektor der x
der Auswertungsstatistiken in Frage:
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
In summary.default
die Ausgabe unter Verwendung signif
formatiert ist, die es Eingang der gelieferten Anzahl signifikanter digits
Runden:
signif(q, digits = 4L)
## 0% 25% 50% 75% 100%
## 0 6778 10400 9354 12810 21190
Während summary.data.frame
format
verwendet, die es verwendet digits
Argument da nur ein sugggestion (?format
) für die Anzahl von signifikanten Ziffern anzuzeigen:
format(q, digits = 4L)
## 0% 25% 50% 75% 100%
## " 0" " 6778" "10395" " 9354" "12811" "21194"
Somit wird, wenn unter Verwendung des Standard digits
Argumentwert 4
, summary.default(data$x)
Runden den 5-stellige Quantile auf nur 4 signifikante Stellen; aber summary.data.frame(data[2])
zeigt die 5-stelligen Quantile ohne Rundung an.
Wenn Sie explizit die digits
Argument größer als 4 liefern, werden Sie identische Ergebnisse erhalten:
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
Als extremes Beispiel für die Unterschiede der beiden Verfahren mit dem Standard 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
Ihre Aufrufe sind (nach S3-Auflösung) äquivalent zu 'summary.data.frame (data [2])' und 'summary.default (data $ x)'. Die Funktionen sind etwas anders definiert und es scheint, dass die Statistiken auch ein wenig anders sind. Die Berechnung der Quartile ist abhängig von der Länge der numerischen Vektoren "bis zur Interpretation", und nicht alle Funktionen in R treffen die gleichen Annahmen wie Sie oder einander. Finde entweder die von dir bevorzugte Methode oder berechne sie selbst (nachdem du für einige Details '? Quantil' gelesen hast). – r2evans