Wie rufe ich R-Funktionen auf, wie selektiere ich Daten, ich weiß nicht genau ....
Moderatoren: EDi , jogo
sarah
Beitrag
von sarah » Mo Jul 10, 2017 10:56 pm
Ich, immernoch Neuling und verzweifelt...
Ausgangssituation:
Code: Alles auswählen
> str(Tabellegesamt)
'data.frame': 2040 obs. of 5 variables:
$ Waldbild : Factor w/ 17 levels "Ahorn-Eschen-Mischbestand Willershausen",..: 1 2 3 4 5 6 7 8 9 10 ...
$ Lage : Factor w/ 2 levels "Bestand","Wegrand": 1 1 1 1 1 1 1 1 1 1 ...
$ Art : Factor w/ 60 levels "Ajuga reptans",..: 1 1 1 1 1 1 1 1 1 1 ...
$ Häufigkeit: int 0 0 0 0 0 0 0 0 0 0 ...
$ Vorkommen : logi FALSE FALSE FALSE FALSE FALSE FALSE ...
> head(Tabellegesamt)
Waldbild Lage Art Häufigkeit Vorkommen
1 Ahorn-Eschen-Mischbestand Willershausen Bestand Ajuga reptans 0 FALSE
2 Ahorn-Stangenholz Düderode Bestand Ajuga reptans 0 FALSE
3 Birken-Eichen Bestand Ecklingerode Bestand Ajuga reptans 0 FALSE
4 Birken-Eichen Bestand Springe Bestand Ajuga reptans 0 FALSE
5 Buchen-Altholz Bodensee Bestand Ajuga reptans 0 FALSE
6 Buchen-Altholz Wiershausen Bestand Ajuga reptans 0 FALSE
>
Ich würde gerne meine Tabelle formatieren. Ich hatte hier im Forum schon gesucht und bin auch mehr oder weniger fündig geworden. Es hat zumindest soweit geklappt, dass ich mir das Paket "reshape2" installiert habe. Nun hätte ich gerne eine Tabelle in der die "Arten" nur einmalig vorkommen und die Lage mit dem Waldbild kombiniert wird, sodass das Vorkommen in den jeweiligen Zeilen ist. Ich hatte es mit dem Befehl dcast ausprobiert. Aber ich habe da meine Probleme wie ich all die Variablen darein bekommen soll und ich müsste ja eine ganz neue Spalte anlegen für die Kombi Waldbild und Lage...
Also es sollte dann irgendwann so aussehen:
Code: Alles auswählen
Art Ahorn-Eschen-MischbestandWegrand Ahorn-Eschen-MischbestandBestand etc.
Ajuga Reptans FALSE TRUE
Ich hoffe jemand kann mir helfen.
jogo
Beiträge: 2086 Registriert: Fr Okt 07, 2016 8:25 am
Beitrag
von jogo » Di Jul 11, 2017 9:21 am
Hallo Sarah,
liefert
Code: Alles auswählen
xtabs(Vorkommen ~ Art + paste(Waldbild, Lage), data=Tabellegesamt)
das gewünschte Ergebnis?
(statt TRUE und FALSE stehen dort 1 und 0)
Gruß, Jörg
sarah
Beitrag
von sarah » Di Jul 11, 2017 9:51 am
Hallo Jörg!
Fast....
Code: Alles auswählen
Art Eichen-Eschen-Mischbestand Willershausen Wegrand
Ajuga reptans 0
Allium ursinum 1
Asarum europaeum 0
Athyrium filix-femina 0
Bromus erectus 0
Calamagrostis epigejos 0
Cardamine bulbifera 1
Carex remota 1
Carex sylvatica 1
Cirsium oleraceum 1
Crepis paludosa 0
Dactylis polygama 0
Deschampsia cespitosa 0
Deschampsia flexuosa 0
Dryopteris carthusiana 0
Dryopteris filix-mas 0
Epilobium montanum 0
Equisetum arvense 0
Festuca altissima 0
Festuca gigantea 1
Galium odoratum 1
Galium sylvaticum 0
Geranium robertianum 0
Geum urbanum 0
Glechoma hederacea 0
Gymnocarpium dryopteris 0
Hedera helix 0
Hepatica nobilis 0
Hieracium sylvaticum 0
Jetzt hätte ich das ganze gerne in einem schönen dataframe. Also eine zusammenhängende Tabelle. Ich hoffe , ich drücke mich verständlich aus...
jogo
Beiträge: 2086 Registriert: Fr Okt 07, 2016 8:25 am
Beitrag
von jogo » Di Jul 11, 2017 10:11 am
Hallo Sarah,
dann vielleicht doch mit
reshape2::dcast
Code: Alles auswählen
library(reshape2)
is.data.frame(reshape2::dcast(Tabellegesamt, Art ~ paste(Waldbild, Lage), value.var = "Vorkommen"))
Aber vielleicht geht auch:
Code: Alles auswählen
X <- xtabs(Vorkommen ~ Art + paste(Waldbild, Lage), data=Tabellegesamt)
is.matrix(X) # liefert TRUE
as.data.frame(unclass(X))
Gruß, Jörg
sarah
Beitrag
von sarah » Di Jul 11, 2017 12:12 pm
leider nein....
mit dcast:
Code: Alles auswählen
> is.data.frame(reshape2::dcast(Tab2, Art ~ paste(Waldbild, Lage), value.var = "Vorkommen"))
[1] TRUE[code]
[/code]
und der andere Befehl gibt quasi das aus, was du mir am Anfang vorgeschlagen hast...
Code: Alles auswählen
Fichten-Stangenholz Wiershausen Bestand
Ajuga reptans 0
Allium ursinum 0
Asarum europaeum 0
Athyrium filix-femina 0
Bromus erectus 0
Calamagrostis epigejos 0
Cardamine bulbifera 0
Carex remota 0
Carex sylvatica 1
Cirsium oleraceum 0
Crepis paludosa 0
Dactylis polygama 0
Deschampsia cespitosa 0
Deschampsia flexuosa 1
Dryopteris carthusiana 1
Dryopteris filix-mas 1
Epilobium montanum 0
Equisetum arvense 0
Festuca altissima 0
Festuca gigantea 0
Galium odoratum 1
Galium sylvaticum 0
Geranium robertianum 0
Geum urbanum 1
Glechoma hederacea 0
Gymnocarpium dryopteris 0
Hedera helix 0
Hepatica nobilis 0
Hieracium sylvaticum 0
Fichten-Stangenholz Wiershausen Wegrand
Ajuga reptans 0
Allium ursinum 1
Asarum europaeum 0
Athyrium filix-femina 0
Bromus erectus 0
Calamagrostis epigejos 0
Cardamine bulbifera 0
Carex remota 1
Carex sylvatica 1
Cirsium oleraceum 0
Crepis paludosa 0
Dactylis polygama 0
Deschampsia cespitosa 0
Deschampsia flexuosa 0
Dryopteris carthusiana 0
Dryopteris filix-mas 1
Epilobium montanum 0
Equisetum arvense 1
Festuca altissima 1
Festuca gigantea 0
Galium odoratum 1
Galium sylvaticum 0
Geranium robertianum 1
Geum urbanum 0
Glechoma hederacea 0
Gymnocarpium dryopteris 0
Hedera helix 0
Hepatica nobilis 0
Hieracium sylvaticum 0
jogo
Beiträge: 2086 Registriert: Fr Okt 07, 2016 8:25 am
Beitrag
von jogo » Di Jul 11, 2017 2:39 pm
sarah hat geschrieben: ↑ Di Jul 11, 2017 12:12 pm
leider nein....
mit dcast:
Code: Alles auswählen
> is.data.frame(reshape2::dcast(Tab2, Art ~ paste(Waldbild, Lage), value.var = "Vorkommen"))
[1] TRUE
hier solltest Du auch nur
Code: Alles auswählen
reshape2::dcast(Tab2, Art ~ paste(Waldbild, Lage), value.var = "Vorkommen")
nehmen. Das Drumherum diente nur dazu zu zeigen, dass das Ergebnis ein Dataframe ist.
und der andere Befehl gibt quasi das aus, was du mir am Anfang vorgeschlagen hast...
Code: Alles auswählen
Fichten-Stangenholz Wiershausen Bestand
Ajuga reptans 0
...
Hepatica nobilis 0
Hieracium sylvaticum 0
ja, aber diesmal als Dataframe, was bei dem Ergebnis von
xtabs() nicht der Fall ist.
Vielleicht hast Du Recht mit Deinem Nachsatz:
Jetzt hätte ich das ganze gerne in einem schönen dataframe. Also eine zusammenhängende Tabelle. Ich hoffe , ich drücke mich verständlich aus...
und ich habe die gewünschte Anforderung nicht verstanden.
Gruß, Jörg
sarah
Beitrag
von sarah » Di Jul 11, 2017 3:24 pm
Oh je, es tut mir leid, ich bin echt ein blutiger Anfänger...
aber es hat geklappt! Vielen vielen Dank, ich hätte wahrscheinlich Wochen gebraucht um das hinzukriegen!
Letzte Frage:
Mit den True/False -Daten kann ich auch statistische Tests durchführen?
bigben
Beiträge: 2781 Registriert: Mi Okt 12, 2016 9:09 am
Beitrag
von bigben » Di Jul 11, 2017 5:23 pm
TRUE und FALSE sind in R ziemlich genau das gleiche wie 1 und 0. Jedenfalls können damit alle Rechenoperationen wie mit 1 und 0 durchgeführt werden:
Code: Alles auswählen
> FALSE * 5
[1] 0
> TRUE * 5
[1] 5
> FALSE * TRUE
[1] 0
> mean(c(FALSE, FALSE, TRUE, TRUE))
[1] 0.5
> 1==TRUE
[1] TRUE
> 0==FALSE
[1] TRUE
LG,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
jogo
Beiträge: 2086 Registriert: Fr Okt 07, 2016 8:25 am
Beitrag
von jogo » Mo Jul 17, 2017 9:05 am
sarah hat geschrieben: ↑ Di Jul 11, 2017 3:24 pm
Oh je, es tut mir leid, ich bin echt ein blutiger Anfänger...
aber es hat geklappt! Vielen vielen Dank, ich hätte wahrscheinlich Wochen gebraucht um das hinzukriegen!
Letzte Frage:
Mit den True/False -Daten kann ich auch statistische Tests durchführen?
na klar.
Mir fällt da spontan ein:
logistische Regression (dichotome Variable als Abhängige)
ANOVA (dichotome Variable als Unabhängige)
chi² nachdem man die Gruppen getrennt und weiter unterteilt hat.
Gruß, Jörg