Reshape

Wie rufe ich R-Funktionen auf, wie selektiere ich Daten, ich weiß nicht genau ....

Moderatoren: EDi, jogo

Antworten
sarah

Reshape

Beitrag von sarah »

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: 2085
Registriert: Fr Okt 07, 2016 8:25 am

Re: Reshape

Beitrag von jogo »

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

Re: Reshape

Beitrag von sarah »

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: 2085
Registriert: Fr Okt 07, 2016 8:25 am

Re: Reshape

Beitrag von jogo »

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

Re: Reshape

Beitrag von sarah »

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: 2085
Registriert: Fr Okt 07, 2016 8:25 am

Re: Reshape

Beitrag von jogo »

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

Re: Reshape

Beitrag von sarah »

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: 2771
Registriert: Mi Okt 12, 2016 9:09 am

Re: Reshape

Beitrag von bigben »

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: 2085
Registriert: Fr Okt 07, 2016 8:25 am

Re: Reshape

Beitrag von jogo »

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
Antworten