Mittlere Artenzahl berechnen (Mittelwert)

Berechnung von deskriptiven Statistiken mit R.

Mittlere Artenzahl berechnen (Mittelwert)

Beitragvon krissie » Do 11. Jul 2019, 20:42

Hallo,

für meine Masterarbeit möchte ich die mittlere Artenanzahl berechnen. Dafür benötige ich zunächst die Anzahl der Arten pro Spalte und dann den Mittelwert von bestimmten Spaltenabschnitten: Also der Mittelwert nur von den Spalten A1 bis A8 (V2 bis V9), dann nur von B1 bis B8 (V10 bis V17) usw. Der Datensatz erstreckt sich über etwa 500 Spalten. Wie kann ich die Mittelwerte für die einzelnen Spaltenabschnitte aggregierend berechnen?

Bitte helft mir!!

Viele Grüße,
Krissie
Dateianhänge
Unbenannt.PNG
Tabellenausschnitt
Unbenannt.PNG (65.57 KiB) 159-mal betrachtet
krissie
 
Beiträge: 7
Registriert: Do 11. Jul 2019, 20:18
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: Mittlere Artenzahl berechnen (Mittelwert)

Beitragvon jogo » Sa 13. Jul 2019, 07:08

Hallo Krissie,

das sieht so aus, als wenn beim Einlesen der Daten etwas schief gelaufen ist.
Kannst Du bitte mal den Output von
Code: Alles auswählen
str(drygrassland_ohne_D[, 1:20])
in Deine nächste Nachricht kopieren?

Gruß, Jörg
üblicherweise bin ich öfter in jenem Forum: http://forum.r-statistik.de
jogo
 
Beiträge: 193
Registriert: Mo 26. Feb 2018, 09:56
Danke gegeben: 3
Danke bekommen: 1 mal in 1 Post

Re: Mittlere Artenzahl berechnen (Mittelwert)

Beitragvon krissie » Sa 13. Jul 2019, 11:57

Hallo Jörg,

vielen Dank für deine Hilfe!

Hier ist der Output...

'data.frame': 208 obs. of 20 variables:
$ V1 : Factor w/ 205 levels "Achillea_millefolium_agg_",..: 134 49 79 84 130 166 172 120 78 94 ...
$ V2 : Factor w/ 4 levels "0","30","5","TR27A1": 4 2 2 3 3 3 3 1 1 1 ...
$ V3 : Factor w/ 4 levels "0","30","5","TR27A2": 4 1 2 3 1 1 2 1 1 1 ...
$ V4 : Factor w/ 4 levels "0","5","75","TR27A3": 4 1 1 1 2 1 1 2 3 1 ...
$ V5 : Factor w/ 4 levels "0","5","75","TR27A4": 4 1 1 1 1 1 1 1 3 2 ...
$ V6 : Factor w/ 4 levels "0","30","5","TR27A5": 4 1 1 1 1 1 1 1 3 1 ...
$ V7 : Factor w/ 4 levels "0","5","75","TR27A6": 4 1 1 1 1 1 1 1 3 1 ...
$ V8 : Factor w/ 5 levels "0","30","5","75",..: 5 1 1 1 1 1 2 1 4 1 ...
$ V9 : Factor w/ 5 levels "0","30","5","75",..: 5 1 1 1 1 1 2 1 4 1 ...
$ V10: Factor w/ 4 levels "0","30","5","TR27B1": 4 2 3 3 3 3 3 1 3 1 ...
$ V11: Factor w/ 4 levels "0","30","5","TR27B2": 4 1 2 3 1 1 2 1 3 1 ...
$ V12: Factor w/ 4 levels "0","30","5","TR27B3": 4 1 1 1 3 1 1 3 2 3 ...
$ V13: Factor w/ 4 levels "0","5","75","TR27B4": 4 2 1 1 2 1 1 2 3 2 ...
$ V14: Factor w/ 5 levels "0","30","5","75",..: 5 1 1 1 1 1 1 3 2 1 ...
$ V15: Factor w/ 5 levels "0","30","5","75",..: 5 1 1 1 1 1 3 3 4 1 ...
$ V16: Factor w/ 4 levels "0","30","5","TR27B7": 4 1 1 1 1 1 2 1 2 1 ...
$ V17: Factor w/ 4 levels "0","30","5","TR27B8": 4 1 1 1 1 1 2 3 2 1 ...
$ V18: Factor w/ 4 levels "0","30","5","TR27C1": 4 3 2 3 3 3 3 3 2 1 ...
$ V19: Factor w/ 5 levels "0","30","5","75",..: 5 3 1 1 3 1 2 3 4 3 ...
$ V20: Factor w/ 5 levels "0","30","5","75",..: 5 3 1 1 1 1 3 3 4 1 ...
>

Ich möchte außerdem die Bezeichnung der Reihennamen ändern, also statt V1, V2 usw. die Bezeichnungen der ersten Zeile übernehmen. Wenn ich folgenden code nutze, kommt immer die Fehlermeldung "doppelte row.names" sind nicht zulässig". Wo ist der Fehler?

Code: Alles auswählen
[code]drygrassland<-read.table("drygrassland_main.txt",header=T,row.names = 1)[/code]
krissie
 
Beiträge: 7
Registriert: Do 11. Jul 2019, 20:18
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: Mittlere Artenzahl berechnen (Mittelwert)

Beitragvon krissie » Sa 13. Jul 2019, 11:58

jogo hat geschrieben:Hallo Krissie,

das sieht so aus, als wenn beim Einlesen der Daten etwas schief gelaufen ist.
Kannst Du bitte mal den Output von
Code: Alles auswählen
str(drygrassland_ohne_D[, 1:20])
in Deine nächste Nachricht kopieren?

Gruß, Jörg
krissie
 
Beiträge: 7
Registriert: Do 11. Jul 2019, 20:18
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: Mittlere Artenzahl berechnen (Mittelwert)

Beitragvon jogo » Mo 15. Jul 2019, 09:14

Hallo Krissie,

versuch mal:
Code: Alles auswählen
drygrassland<-read.table("drygrassland_main.txt", skip=1,header=TRUE, row.names = 1)

Es scheint oberhalb der Kopfzeile noch eine weitere zu geben. Mit skip=1 kannst Du diese überspringen.
Bitte kontrolliere anschließend wieder die Struktur des Dataframes.
Wenn Spalten als Factor angezeigt werden, die eigentlich numerische Werte enthalten sollten, ist etwas schief gegangen.

Gruß, Jörg
üblicherweise bin ich öfter in jenem Forum: http://forum.r-statistik.de
jogo
 
Beiträge: 193
Registriert: Mo 26. Feb 2018, 09:56
Danke gegeben: 3
Danke bekommen: 1 mal in 1 Post

Re: Mittlere Artenzahl berechnen (Mittelwert)

Beitragvon krissie » Mo 15. Jul 2019, 13:19

jogo hat geschrieben:Hallo Krissie,

versuch mal:
Code: Alles auswählen
drygrassland<-read.table("drygrassland_main.txt", skip=1,header=TRUE, row.names = 1)

Es scheint oberhalb der Kopfzeile noch eine weitere zu geben. Mit skip=1 kannst Du diese überspringen.
Bitte kontrolliere anschließend wieder die Struktur des Dataframes.
Wenn Spalten als Factor angezeigt werden, die eigentlich numerische Werte enthalten sollten, ist etwas schief gegangen.

Gruß, Jörg


Danke! Die row names haben nun geklappt ;)

Hier ist nochmal die Datenstruktur. Sind die Werte jetzt numerisch? Und was bedeutet die zweite Zeile?

data.frame': 207 obs. of 553 variables:
$ species : Factor w/ 204 levels "Achillea_millefolium_agg_",..: 49 79 84 130 165 171 120 78 94 101 ...
$ TR27A1 : int 30 30 5 5 5 5 0 0 0 0 ...
$ TR27A2 : int 0 30 5 0 0 30 0 0 0 0 ...
$ TR27A3 : int 0 0 0 5 0 0 5 75 0 0 ...
$ TR27A4 : int 0 0 0 0 0 0 0 75 5 5 ...
$ TR27A5 : int 0 0 0 0 0 0 0 5 0 0 ...
$ TR27A6 : int 0 0 0 0 0 0 0 75 0 0 ...
$ TR27A7 : int 0 0 0 0 0 30 0 75 0 0 ...
$ TR27A8 : int 0 0 0 0 0 30 0 75 0 0 ...
$ TR27B1 : int 30 5 5 5 5 5 0 5 0 0 ...
$ TR27B2 : int 0 30 5 0 0 30 0 5 0 5 ...
$ TR27B3 : int 0 0 0 5 0 0 5 30 5 0 ...
$ TR27B4 : int 5 0 0 5 0 0 5 75 5 5 ...
$ TR27B5 : int 0 0 0 0 0 0 5 30 0 0 ...
$ TR27B6 : int 0 0 0 0 0 5 5 75 0 0 ...
$ TR27B7 : int 0 0 0 0 0 30 0 30 0 0 ...
$ TR27B8 : int 0 0 0 0 0 30 5 30 0 0 ...
$ TR27C1 : int 5 30 5 5 5 5 5 30 0 0 ...
$ TR27C2 : int 5 0 0 5 0 30 5 75 5 5 ...
$ TR27C3 : int 5 0 0 0 0 5 5 75 0 0 ...
$ TR27C4 : int 5 0 0 5 0 30 5 30 0 0 ...
$ TR27E : int 30 5 5 5 5 30 30 75 5 5 ...
krissie
 
Beiträge: 7
Registriert: Do 11. Jul 2019, 20:18
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: Mittlere Artenzahl berechnen (Mittelwert)

Beitragvon jogo » Mo 15. Jul 2019, 13:44

krissie hat geschrieben:Danke! Die row names haben nun geklappt ;)

Hier ist nochmal die Datenstruktur. Sind die Werte jetzt numerisch? Und was bedeutet die zweite Zeile?

data.frame': 207 obs. of 553 variables:
$ species : Factor w/ 204 levels "Achillea_millefolium_agg_",..: 49 79 84 130 165 171 120 78 94 101 ...
$ TR27A1 : int 30 30 5 5 5 5 0 0 0 0 ...
$ TR27A2 : int 0 30 5 0 0 30 0 0 0 0 ...
$ TR27A3 : int 0 0 0 5 0 0 5 75 0 0 ...
$ TR27A4 : int 0 0 0 0 0 0 0 75 5 5 ...
$ TR27A5 : int 0 0 0 0 0 0 0 5 0 0 ...
$ TR27A6 : int 0 0 0 0 0 0 0 75 0 0 ...
$ TR27A7 : int 0 0 0 0 0 30 0 75 0 0 ...
$ TR27A8 : int 0 0 0 0 0 30 0 75 0 0 ...
...
$ TR27E : int 30 5 5 5 5 30 30 75 5 5 ...

ja, int steht für integer. Du meinst die Zeile mit $species :?:
Wenn Du das nicht möchtest, musst Du so einlesen:
Code: Alles auswählen
drygrassland<-read.table("drygrassland_main.txt", skip=1, header=TRUE, row.names = 1, stringsAsFactors=FALSE)

Für die Anzahl der Arten je Spalte:
Code: Alles auswählen
sapply(drygrassland[-1], function(x) sum(x>0))

Und dann war ja noch:
und dann den Mittelwert von bestimmten Spaltenabschnitten: Also der Mittelwert nur von den Spalten A1 bis A8 (V2 bis V9), dann nur von B1 bis B8 (V10 bis V17)

Dafür müsstest Du mal kundtun, wie Du es bei der Mittelwertbildung mit den Nullen handhaben möchtest:
a) die Nullen sollen normal einbezogen werden (mean(c(3, 0, 1, 0)) ergibt 1),
b) die Nullen bedeuten NA und sollen nicht berücksichtigt werden; mean(c(3, NA, 1, NA), na.rm=TRUE) ergibt 2

Gruß, Jörg
üblicherweise bin ich öfter in jenem Forum: http://forum.r-statistik.de
jogo
 
Beiträge: 193
Registriert: Mo 26. Feb 2018, 09:56
Danke gegeben: 3
Danke bekommen: 1 mal in 1 Post

Re: Mittlere Artenzahl berechnen (Mittelwert)

Beitragvon krissie » Mi 17. Jul 2019, 14:02

jogo hat geschrieben:
krissie hat geschrieben:Danke! Die row names haben nun geklappt ;)

Hier ist nochmal die Datenstruktur. Sind die Werte jetzt numerisch? Und was bedeutet die zweite Zeile?

data.frame': 207 obs. of 553 variables:
$ species : Factor w/ 204 levels "Achillea_millefolium_agg_",..: 49 79 84 130 165 171 120 78 94 101 ...
$ TR27A1 : int 30 30 5 5 5 5 0 0 0 0 ...
$ TR27A2 : int 0 30 5 0 0 30 0 0 0 0 ...
$ TR27A3 : int 0 0 0 5 0 0 5 75 0 0 ...
$ TR27A4 : int 0 0 0 0 0 0 0 75 5 5 ...
$ TR27A5 : int 0 0 0 0 0 0 0 5 0 0 ...
$ TR27A6 : int 0 0 0 0 0 0 0 75 0 0 ...
$ TR27A7 : int 0 0 0 0 0 30 0 75 0 0 ...
$ TR27A8 : int 0 0 0 0 0 30 0 75 0 0 ...
...
$ TR27E : int 30 5 5 5 5 30 30 75 5 5 ...

ja, int steht für integer. Du meinst die Zeile mit $species :?:
Wenn Du das nicht möchtest, musst Du so einlesen:
Code: Alles auswählen
drygrassland<-read.table("drygrassland_main.txt", skip=1, header=TRUE, row.names = 1, stringsAsFactors=FALSE)

Für die Anzahl der Arten je Spalte:
Code: Alles auswählen
sapply(drygrassland[-1], function(x) sum(x>0))

Und dann war ja noch:
und dann den Mittelwert von bestimmten Spaltenabschnitten: Also der Mittelwert nur von den Spalten A1 bis A8 (V2 bis V9), dann nur von B1 bis B8 (V10 bis V17)

Dafür müsstest Du mal kundtun, wie Du es bei der Mittelwertbildung mit den Nullen handhaben möchtest:
a) die Nullen sollen normal einbezogen werden (mean(c(3, 0, 1, 0)) ergibt 1),
b) die Nullen bedeuten NA und sollen nicht berücksichtigt werden; mean(c(3, NA, 1, NA), na.rm=TRUE) ergibt 2

Gruß, Jörg


Super, die Artenzahl hat auch geklappt!

Genau, jetzt bräuchte ich nur noch die Mittelwerte von bestimmten Artenzahlabschnitten. Im Screenshot hab ich nun nur die Artenzahlen. Nullen sind hier keine mehr. Wie kann ich den Mittelwert von TR27A1 bis TR27A8, und TR27B1 bis TR27B8, und TR27C1 bis TR27C4 usw. bilden? Der Datensatz erstreckt sich mit diesem Muster über 533 Spalten...
Dateianhänge
Unbenannt.PNG
Unbenannt.PNG (24.44 KiB) 120-mal betrachtet
krissie
 
Beiträge: 7
Registriert: Do 11. Jul 2019, 20:18
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: Mittlere Artenzahl berechnen (Mittelwert)

Beitragvon jogo » Mi 17. Jul 2019, 17:48

krissie hat geschrieben:Super, die Artenzahl hat auch geklappt!
sehr schön.

Genau, jetzt bräuchte ich nur noch die Mittelwerte von bestimmten Artenzahlabschnitten. Im Screenshot hab ich nun nur die Artenzahlen. Nullen sind hier keine mehr. Wie kann ich den Mittelwert von TR27A1 bis TR27A8, und TR27B1 bis TR27B8, und TR27C1 bis TR27C4 usw. bilden? Der Datensatz erstreckt sich mit diesem Muster über 533 Spalten...
Und genau hierfür solltest Du schreiben, wie mit den Nullen umgegangen werden soll, denn es macht einen Unterschied.

Code: Alles auswählen
M <- matrix(as.matrix(drygrassland[-1]), 8*nrow(drygrassland))
# entweder
colMeans(M)
# oder:
M[M==0] <- NA
colMeans(M, na.rm=TRUE)


Gruß, Jörg
üblicherweise bin ich öfter in jenem Forum: http://forum.r-statistik.de
jogo
 
Beiträge: 193
Registriert: Mo 26. Feb 2018, 09:56
Danke gegeben: 3
Danke bekommen: 1 mal in 1 Post

Re: Mittlere Artenzahl berechnen (Mittelwert)

Beitragvon krissie » Do 18. Jul 2019, 21:20

Und genau hierfür solltest Du schreiben, wie mit den Nullen umgegangen werden soll, denn es macht einen Unterschied.

Code: Alles auswählen
M <- matrix(as.matrix(drygrassland[-1]), 8*nrow(drygrassland))
# entweder
colMeans(M)
# oder:
M[M==0] <- NA
colMeans(M, na.rm=TRUE)



Ok verstehe! Die Nullen sollen nicht berücksichtigt werden. Es ist allerdings so, dass ich nicht den Mittelwert aller 8 Reihen benötige, sondern folgendes Muster setzt sich fort (sorry, hätte ich erwähnen müssen):

8 Reihen, 8 Reihen, 4 Reihen, 1 Reihe, 8 Reihen, 8 Reihen, 4 Reihen, 1 Reihe usw.

Geht das auch irgendwie?

Ich danke dir vielmals für deine Antworten!!
krissie
 
Beiträge: 7
Registriert: Do 11. Jul 2019, 20:18
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Nächste

Zurück zu Deskriptive Statistik

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast

cron