R - beschreiben() ausgegeben, um einen Daten-frame
Erstellen Sie ein Daten-frame mit describe () - Funktion. Dataset unter Berücksichtigung iris. Der Daten-frame sollte dann so Aussehen:
Variable n missing unique Info Mean 0.05 0.1 0.25 0.5 0.75 0.9 0.95
Sepal.Length 150 0 35 1 5.843 4.6 4.8 5.1 5.8 6.4 6.9 7.255
Sepal.Width 150 0 23 0.99 3.057 2.345 2.5 2.8 3 3.3 3.61 3.8
Petal.Length 150 0 43 1 3.758 1.3 1.4 1.6 4.35 5.1 5.8 6.1
Petal.Width 150 0 22 0.99 1.199 0.2 0.2 0.3 1.3 1.8 2.2 2.3
Species 150 0 3
Gibt es eine Möglichkeit, heraus zu zwingen, die Ausgabe von describe() zu Daten.frame-Typ? Wenn ich versuche, mich zu zwingen, bekomme ich eine Fehlermeldung wie unten dargestellt:
library(Hmisc)
statistics <- describe(iris)
statistics[1]
first_vec <- statistics[1]$Sepal.Length
as.data.frame(first_vec)
#Error in as.data.frame.default(first_vec) : cannot coerce class ""describe"" to a data.frame
Dank
- Sie sollten den code ändern, der für
describe.vector
und verändern Sie es so, dass es produziert numerische Ausgabe einer Konstanten Länge. - die Tabelle in meinem post ist die erwartete Ausgabe. Vielen Dank für Ihre Eingaben.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den Weg, um dies herauszufinden, ist zu untersuchen, werden die Objekte mit
str()
:Sehen wir, dass
di
ist eine Liste von Listen. Wir können ihn auseinander nehmen durch die Betrachtung nur der ersten Teilliste. Sie können zu konvertieren, die in einen Vektor:Es ist sehr, sehr lang (125). Die Elemente wurden dazu gezwungen, alle die gleiche (und umfassendste) geben, nämlich Charakter. Es scheint, Sie wollen die 2. durch 12th-Elemente:
Jetzt haben Sie etwas, das Sie beginnen können zu arbeiten. Beachten Sie aber, dass dies nur der Fall zu sein scheint, für numerische Variablen, die Faktor-variable
species
ist anders:In diesem Fall, es scheint, Sie wollen nur die Elemente zwei bis vier.
Mit diesem Prozess der Entdeckung und Problemlösung, können Sie sehen, wie würden Sie den Ausgang der
describe
auseinander und setzen Sie die gewünschten Informationen in einem Daten-frame. Allerdings wird es eine Menge Arbeit. Du wirst vermutlich verwenden müssen, loops und vielif(){ ... } else{ ... }
Blöcke. Können Sie nur wollen, um code Ihre eigenen dataset Beschreibung der Funktion von Grund auf.mtx <- do.call(rbind, sapply(statistics , "[[", "counts")[1:3])
. Es ist ein bisschen ärgerlich für diesen Aufwand, das Ergebnis ist Charakter, aber das ist, wie Frank Griffe der unterschiedlichen Präzision der Spalten.print(as.data.frame(mtx))
Können Sie dies mit Hilfe der
stat.desc
Funktion aus derpastecs
Paket:Den
summary_df
ist der dataframe Sie wollte. Sehen mehr info hier.In R, Sie müssen nur verwenden Sie die
summary(iris)
Funktion stattdescribe(iris)
Funktion in Python.