Hallo!
Ich bin absoluter Neuling und brauche dringend Hilfe. Ich möchte die Bodenvegetation am Wegesrand und im Bestand vergleiche. Dazu habe ich Stichproben gesammelt. Ich habe keine Pflanzen gezählt. Die Tabelle soll folgerndermaßen aussehen:
Fichte -Altholz Weg Fichte-Altholz Bestand BU-Altholz Weg BU-Altholz Bestand
Allium ursinum 1 0 0 1
Das ist nur ein Beispiel. "1"= kommt vor "0"=kommt nicht vor
Bis jetzt konnte ich nur ein dataframe erstellen indem die Bestände, Arten und die Frequency dargestellt werden. Es scheitert also daran, dass ich es nicht schaffe R mit zu teilen, dass überall wo <0 steht eine "1" hinkommen soll, andernfalls eine "0". Das habe ich mit ifelse ausprobiert. also: if(.....){print(...)}else{print(...)}. Bei meiner Ausführung kommen jetzt nur Einsen... Ich weiß nicht, ob mein Problem so nachvollziehbar ist. Falls ihr mehr infos braucht um mir zu helfen, bin ich mehr als gerne bereit diese zur Verfügung zu stellen. Ich habe das Internet schon stunden-/tagelang durchsucht, konnte aber nichts finden. Und verzeiht mir bei blöden Fragen...bin absoluter Neuling!
ifelse---HILFE
Re: ifelse---HILFE
Hallo Sarah,
willkommen im Forum!
Bitte zeig uns den Output von folgenden Zeilen:Trotzdem schon ein kleiner Hinweis:
schau Dir mal die Funktion ifelse() an:
Gruß, Jörg
willkommen im Forum!
Bitte zeig uns den Output von folgenden Zeilen:
Code: Alles auswählen
str(DeinDataframe)
head(DeinDataframe)
schau Dir mal die Funktion ifelse() an:
Code: Alles auswählen
help("ifelse")
Re: ifelse---HILFE
str(tab_gesamt)
'data.frame': 2160 obs. of 4 variables:
$ Bestand: Factor w/ 18 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 ...
$ Freq : int 0 0 0 0 0 0 0 0 0 0 ...
> head(tab_gesamt)
Bestand Lage Art Freq
1 Ahorn-Eschen-Mischbestand Willershausen Bestand Ajuga reptans 0
2 Ahorn-Stangenholz Düderode Bestand Ajuga reptans 0
3 Birken-Eichen Bestand Bestand Ajuga reptans 0
4 Birken-Eichen Bestand Springe Bestand Ajuga reptans 0
5 Buchen-Altholz Bodensee Bestand Ajuga reptans 0
6 Buchen-Altholz Wiershausen Bestand Ajuga reptans 0
-------so? oder soll ich irgendwas anderes machen?
'data.frame': 2160 obs. of 4 variables:
$ Bestand: Factor w/ 18 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 ...
$ Freq : int 0 0 0 0 0 0 0 0 0 0 ...
> head(tab_gesamt)
Bestand Lage Art Freq
1 Ahorn-Eschen-Mischbestand Willershausen Bestand Ajuga reptans 0
2 Ahorn-Stangenholz Düderode Bestand Ajuga reptans 0
3 Birken-Eichen Bestand Bestand Ajuga reptans 0
4 Birken-Eichen Bestand Springe Bestand Ajuga reptans 0
5 Buchen-Altholz Bodensee Bestand Ajuga reptans 0
6 Buchen-Altholz Wiershausen Bestand Ajuga reptans 0
-------so? oder soll ich irgendwas anderes machen?
Re: ifelse---HILFE
Hallo,
ja, Du solltest sowas immer im code-Tags setzen
Probier mal
Das sollte Deinem Dataframe eine neue Spalte hinzufügen, die TRUE enthält, wenn Freq > 0 ist (oder meintest Du wirklich < 0??) und FALSE, wenn nicht. True und False werde von R beim Rechnen wie 1 und 0 verwendet, sodass Deine Frage damit beantwortet sein sollte:
LG,
Bernhard
ja, Du solltest sowas immer im code-Tags setzen
Probier mal
Code: Alles auswählen
tab_gesamt$Freq_binaer <- tab_gesamt$Freq > 0
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
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Re: ifelse---HILFE
ja, ist schon nicht schlecht. Zur Formatierung hat Bernhard ja schon was geschrieben, siehe auch: viewtopic.php?f=20&t=29sarah hat geschrieben: ↑Fr Jul 07, 2017 3:32 pm str(tab_gesamt)
'data.frame': 2160 obs. of 4 variables:
$ Bestand: Factor w/ 18 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 ...
$ Freq : int 0 0 0 0 0 0 0 0 0 0 ...
> head(tab_gesamt)
Bestand Lage Art Freq
1 Ahorn-Eschen-Mischbestand Willershausen Bestand Ajuga reptans 0
2 Ahorn-Stangenholz Düderode Bestand Ajuga reptans 0
3 Birken-Eichen Bestand Bestand Ajuga reptans 0
4 Birken-Eichen Bestand Springe Bestand Ajuga reptans 0
5 Buchen-Altholz Bodensee Bestand Ajuga reptans 0
6 Buchen-Altholz Wiershausen Bestand Ajuga reptans 0
-------so? oder soll ich irgendwas anderes machen?
Jetzt zurück zum Thema. Was möchtest Du jetzt machen:
Code: Alles auswählen
tab_gesamt$Freq[tab_gesamt$Freq<0] <- 1
# oder
tab_gesamt$neuFreq <- ifelse(tab_gesamt$Freq<0, 1, tab_gesamt$Freq)
Beides führt etwa zum gleichen Ergebnis; bei der zweiten Variante wird eine neue Spalte erzeugt und die Spalte $Freq bleibt unverändert.
Gruß, Jörg
Re: ifelse---HILFE
Moin!
ich bin Bernhards Vorschlags gefolgt und nun schaut die Tabelle so aus:
Das ist doch genau das was ich brauchte!!! Super! Vielen dank!!! Jetzt muss ich quasi ja nur noch den Spaltennamen ändern und das sollte ich wohl hinkriegen!
ich bin Bernhards Vorschlags gefolgt und nun schaut die Tabelle so aus:
Code: Alles auswählen
Bestand Lage Art Freq Freq_binaer
1 Ahorn-Eschen-Mischbestand Willershausen Bestand Ajuga reptans 0 FALSE
2 Ahorn-Stangenholz Düderode Bestand Ajuga reptans 0 FALSE
3 Birken-Eichen Bestand 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