Wie erzeuge ich gleichzeitig Auswertungsstatistiken (Mittelwert, SD, Bereich, Stichprobenumfang) für mehrere Kategorien (unterschiedliche Messungen über Reihe 1) von verschiedenen Arten (in Spalte 1) gleichzeitig und lasse sie mit "schreiben" drucken .csv() zu einer Datendatei, ich kann das einfach machen, wenn ich eine Spezies gleichzeitig mache, aber ich würde gerne alle Daten aller Arten in einer .csv-Datei speichern und die Summenstatistik auf einmal erstellen. "Zusammenfassung Statistik in R
Antwort
Ich weiß, wovon Sie sprechen. Angenommen, Sie möchten den Mittelwert, die Standardabweichung, den Bereich und die Stichprobengröße ermitteln. Da R den Funktionsbereich angibt, in dem Sie keine Zahl, sondern die kleinste Kommazahl im Dataset erhalten, gibt es ein Problem. Die Magie ist in tapply(). Ich habe einfach transpose t() und as.matrix verwendet, um das Einfügen in einen Datenrahmen zu erleichtern.
Wie auch immer, schauen Sie sich den eingebauten Iris-Datensatz an.
data(iris)
Ich werde Ihnen den Mittelwert, SD und Stichprobengröße für alle diese in Bezug auf Sepal Länge nur geben, alle Werte auf Zeilen eine Datenrahmen mit rbind schreiben, und dann schließlich den Zeilen Namen geben, mit rownames().
tun Nur soviel:
mean_sepal_length = t(as.matrix(tapply(iris$Sepal.Length, iris$Species, mean)))
mean_sepal_length
sd_sepal_length = t(as.matrix(tapply(iris$Sepal.Length, iris$Species, FUN = sd)))
sd_sepal_length
sample_size_sepal_length = t(as.matrix(tapply(iris$Sepal.Length, iris$Species, FUN = length)))
sample_size_sepal_length
df_sepal_length <- data.frame(mean_sepal_length)
df_sepal_length
View(df_sepal_length)
df_sepal_length = rbind(df_sepal_length, sd_sepal_length)
df_sepal_length = rbind(df_sepal_length, sample_size_sepal_length)
rownames(df_sepal_length) <- c("Mean_sepal_length", "sd_sepal_length", "size_sepal_length")
write.csv(df_sepal_length, "C:/Users/me/Documents/tapply_miracle.csv")
Vielen Dank. Ich kann all diese Daten für jede Art separat erhalten, aber wenn ich diese Daten für mehrere Arten in der gleichen Datenmatrix (.csv-Datei) haben möchte, würde ich sie alle gleichzeitig machen, anstatt die Matrix in einzelne Arten zu zerlegen Datenmatrizen, die separat ausgeführt werden. Gibt es dafür ein Skript? –
ich über meine Antwort zu denken, dass ich in dem Tag gab zurück, und ich dachte, dass es besser gewesen wäre, als ich erkennen, dass die tapply Funktion der Indexvariable akzeptieren als Liste. In meinem Beispiel war mir nur bewusst, dass tapply einen Faktor kategorisieren kann, aber wir können mehrere Faktoren angeben. Der Trick ist, die Iris Datenrahmen von breit in Langform zu schmelzen, die es besser lesbar mit der Funktion Schmelze() machen, und dann tapply mit einer Liste Argumente:
> install.packages("reshape2")
> library(reshape2)
# I used melt to restyle the iris dataframe from wide to long turning the many columns into rows with less columns, and I coerced the iris dataset back to a dataframe.
> iris_melt <- data.frame(melt(data = iris, id = "Species", variable.name = "iris_factors", value.name = "iris_dimensions_cm"))
> head(iris_melt)
Species iris_factors iris_dimensions_cm
1 setosa Sepal.Length 5.1
2 setosa Sepal.Length 4.9
3 setosa Sepal.Length 4.7
4 setosa Sepal.Length 4.6
5 setosa Sepal.Length 5.0
6 setosa Sepal.Length 5.4
Hier werden wir die mittlere Blume Abmessungen aller erhalten die Iris-Faktoren: Kelchblattlänge, Kelchblattbreite, Blütenblattlänge, & Blütenblattbreite über alle Arten (setosa, virginica, versicolor).
> tapply(X = iris_melt$iris_dimensions_cm, INDEX = list(iris_melt$Species, iris_melt$iris_factors), FUN = mean)
Sepal.Length Sepal.Width Petal.Length Petal.Width
setosa 5.006 3.428 1.462 0.246
versicolor 5.936 2.770 4.260 1.326
virginica 6.588 2.974 5.552 2.026
Wenn wir die Reihenfolge der Faktoren in der indexierten Liste zu ändern, können wir die gleichen Informationen, die uns präsentiert bekommen in einem leicht Unterschied Format durch die Zeilen Spiegeln und Spalten:
> tapply(X = iris_melt$iris_dimensions_cm, INDEX = list(iris_melt$iris_factors, iris_melt$Species), FUN = mean)
setosa versicolor virginica
Sepal.Length 5.006 5.936 6.588
Sepal.Width 3.428 2.770 2.974
Petal.Length 1.462 4.260 5.552
Petal.Width 0.246 1.326 2.026
die Erste Standardabweichung ist einfach. Ändern Sie einfach das FUN Argument:
> tapply(X = iris_melt$iris_dimensions_cm, INDEX = list(iris_melt$iris_factors, iris_melt$Species), FUN = sd)
setosa versicolor virginica
Sepal.Length 0.3524897 0.5161711 0.6358796
Sepal.Width 0.3790644 0.3137983 0.3224966
Petal.Length 0.1736640 0.4699110 0.5518947
Petal.Width 0.1053856 0.1977527 0.2746501
Jetzt muss ich Rbind im Grunde nicht verwenden.
- 1. Zusammenfassung Funktion in R
- 2. R - Zusammenfassung in data.frame konvertieren
- 3. R: Format Datenrahmen Zusammenfassung
- 4. Deskriptive Statistik nach Gruppe - R
- 5. R H2O - detaillierte Zusammenfassung
- 6. Zusammenfassung Statistik für Variable, gruppiert nach einer anderen Variablen
- 7. R - Diskrepanz in Zusammenfassung (Daten) und Zusammenfassung (Daten $ Variable)
- 8. Statistik Frage: Kernel Smoothing in R
- 9. Exportieren R Regression Zusammenfassung für publishable Papier
- 10. Bedingte Filterung und Zusammenfassung in R
- 11. R Statistik: Wie ein Wort genau grep
- 12. R Stacked Bar Plot für Baseball Statistik
- 13. R Zusammenfassung Funktion verlassen leere Datensätze hinter
- 14. bootstrapping in R zeigt keine relevante Statistik an
- 15. Statistik Bootstrap-Bibliothek in Python?
- 16. R - dplyr Zusammenfassung über Kombinationen von Faktoren
- 17. Werte der Bootstrap-Statistik
- 18. Einige Zusammenfassung Stat für jede Spalte in DF in R
- 19. zusammenfassende Statistik in scala
- 20. Statistik mit HDFS-Daten
- 21. R: Werte aus einer Zusammenfassung() in einem clValid-Objekt extrahieren
- 22. Eine Untermenge von Variablen in R-Zusammenfassung erhalten
- 23. Zusammenfassung der Werte für Zeilen und Spalten in R
- 24. Web-Crawler in R mit Überschrift und Zusammenfassung
- 25. R: Zusammenfassung Informationen nur für positive Zahlen in einem Bereich
- 26. Firebase-Statistik
- 27. Docker Statistik 100% Speicher
- 28. COLLECT Mit STATISTIK in Teradata
- 29. Wie akkumulieren Statistik in Tensorflow
- 30. Statistik und Matrixalgebra in Ruby
Willkommen bei StackOverflow! Bitte lesen Sie kurz [wie man fragt] (http://stackoverflow.com/help/how-to-ask) und überprüfen Sie, wie Sie ein reproduzierbares Beispiel erstellen können (http://stackoverflow.com/questions/). 5963269/how-to-make-a-great-r-reproduzierbares Beispiel). Dann könnten Sie zurückkommen und Ihre Frage bearbeiten, indem Sie ein Beispiel und einen Code hinzufügen, um zu zeigen, was Sie versucht haben, und alles andere, was zur Klärung Ihrer Frage beiträgt. – Jota