if Werte zuweisen

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

Moderatoren: EDi, jogo

Antworten
jessi
Beiträge: 100
Registriert: Mo Jul 10, 2017 9:23 am

if Werte zuweisen

Beitrag von jessi »

Hallo zusammen,

ich habe Messwerte und möchte diese gerne in Bereiche zusammenfassen und diese dann dem jeweiligen Wert zuordnen.

Code: Alles auswählen

Meine Werte:
wind <- c(194, 195,194, 176,185, 167,174,189,180, 56, 71, 79, 124, 82, 73,39,40,26,31,80,162,132,152,155,179,104,199,174,0)

wind_intervall <- data.frame(name = character(0), len = numeric(0))
for (i in 1:length(wind)){
if (wind == 0 && wind < 90) {rbind(wind_intervall, data.frame(wind, wind_intervall[i] == "N"))}
if (wind == 90 &&  wind < 180) {rbind(wind_intervall, data.frame(wind, wind_intervall[i] == "O"))}
if (wind == 180 &&  wind < 270) {rbind(wind_intervall, data.frame(wind, wind_intervall[i] == "S"))}
if (wind == 270 && wind > 360) {rbind(wind_intervall, data.frame(wind, wind_intervall[i] == "W"))} 
}
print(wind_intervall)
name len 
<0 Zeilen> (oder row.names mit Länge 0)

Mit diesen code bekomme ich zwar keine Fehlermeldung, allerdings auch keine Werte.
Am Ende sollte dastehen:
wind intervall
194 S
195 S
194 S
...
167 O

Wo genau liegt hier der Fehler, was müsste ich an meiner Abfrage ändern, damit sie funktioniert :?:
Bzw. gibt es noch eine andere Form der Zuordnung, ohne for-Schleife?

Danke für eure Hilfe.
Jessi
jogo
Beiträge: 2085
Registriert: Fr Okt 07, 2016 8:25 am

Re: if Werte zuweisen

Beitrag von jogo »

Code: Alles auswählen

Wind <- data.frame(
wind=c(194, 195,194, 176,185, 167,174,189,180, 56, 71, 79, 124, 82, 73,39,40,26,31,80,162,132,152,155,179,104,199,174,0)
)
Wind$Richtung <- cut(Wind$wind, breaks = c(-1,90,180,270,360), labels=c("N", "O", "S", "W"), right=FALSE)
Wind
jessi
Beiträge: 100
Registriert: Mo Jul 10, 2017 9:23 am

Re: if Werte zuweisen

Beitrag von jessi »

Hallo.

vielen dank. Da habe ich ja viel zu kompliziert gedacht.

Grüße,
Jessi
jessi
Beiträge: 100
Registriert: Mo Jul 10, 2017 9:23 am

Re: if Werte zuweisen

Beitrag von jessi »

Hallo,

jetzt hat sich leider noch eine Fragestellung bezüglich diesen Themas ergeben. Jetzt habe ich zwei Variablen T und Tboden. Damit jetzt Glätte möglich ist, müssen beide kleiner Null sein. Tboden enthält jetzt aber nicht die tatsächlichen Temperaturwerte, sondern nur 0 und 1, wobei 0 für positiv steht und 1 für negativ. Glätte kann jetzt nur entstehen, wenn beide als Temp und TM "neg" sind.

Code: Alles auswählen

T <- data.frame(daten$T)
T$Temp <- cut(d$T, breaks = c(-1, -30,0, 10, 20,30,40), labels = c("sk", "neg","10","20","30", "40"), right = TRUE)

Tb<- data.frame(daten$Tb)
Tb$TM <- cut(d$Tb, breaks = c(-1,0,1), labels = c("pos","neg")
Die Zuweisung funktioniert so weit mal, also die Zuordnung zu den Messdaten ist richtig. Zum weiter arbeiten möchte ich jetzt gerne eine weitere Spalte anlegen mit "Glätte ja" und "Glätte nein". Dazu benötige ich jetzt eine Kombination aus Temp und TM, wenn beide "neg" zeigen, dass sollte "Glätte ja" zugeordnet werden, sonst Glätte nein.

Kann ich die obige Abfrage irgendwie kombinierten?

Danke!
Grüße, Jessi
jogo
Beiträge: 2085
Registriert: Fr Okt 07, 2016 8:25 am

Re: if Werte zuweisen

Beitrag von jogo »

Code: Alles auswählen

daten$Glaette <- (daten$T < 0) & (daten$Tb==1)
Gruß, Jörg
jessi
Beiträge: 100
Registriert: Mo Jul 10, 2017 9:23 am

Re: if Werte zuweisen

Beitrag von jessi »

Hallo,

danke :)

Ist es auch möglich, die beiden Vektoren T und Tb gemeinsam mit der "cut"-Funktion abzufragen und Werte zuzuweisen? Jetzt bekomme ich insgesamt drei neue Spalten: eine Spalte, die mir die Temperatur-Klassen von T anzeigt (sk", "neg","10","20","30", "40"), eine von Tb mit ("pos","neg") und die 3. die mir Glätte anzeigt. Gut wäre, wenn ich T und Tb kombiniert abfragen könnte, und wenn in Temp dann "negativ" steht, wenn T und Tb negativ sind, wenn T positiv ist und Tb negativ dann "Tb neg" und wenn T positiv ist und Tb auch positiv ist, dass die Temperatur-Einteilung, z.B. T = 30° und Tb = 38 °C, == > Klasse "30". Mir geht es eigentlich "nur" um die Zuteilung der Temperatur-Klasse,nicht der von Tb. Diese benötige ich eigentlich nur um einzuschätzen, ob Glätte möglich wäre, der Wert von Tb ist dabei ganz egal. Momentan ist es recht verwirrend, da in der Temp Spalte positiv steht, in der Tb allerdings negativ.

Vielen Dank nochmals,

Grüße,
Jessi
jogo
Beiträge: 2085
Registriert: Fr Okt 07, 2016 8:25 am

Re: if Werte zuweisen

Beitrag von jogo »

Hallo Jessi,

auch ich bin sehr verwirrt ob Deiner Frage.
1.
Da gibt es viele Spalten, die alle sehr ähnlich benannt sind: T, Tb, Tboden, TM, Temp.
Manche davon sind numerisch, manche sind Faktoren. Leider ist nicht immer herauszufinden, welche Spalte wie gespeichert ist ...
Bitte liefere ein reproduzierbares Beispiel! viewtopic.php?f=20&t=11
2.
Die Logik für die Konstruktion des Ergebnisses ist nicht klar; Du schreibst:
z.B. T = 30° und Tb = 38 °C, == > Klasse "30"
Was ist bei
T==29 und Tb==31 ? (Klasse 20 oder Klasse 30)
Auch hier bedarf es weiterer Klarstellung deinerseits.
Auf eine unklare Frage kann es keine dedizierte Antwort geben. Im Zweifelsfall lautet die Antwort "42". ;)
http://www.andreasschroeder.net/index.php?page=572
3.
Du verrätst nicht, was Du anschließend mit der Klasseneinteilung machen möchtest.
(Ich kann mir nicht vorstellen, dass dies das einzige Ziel ist.)
Bitte beschreibe, was Du mit den Daten insgesamt anstellen möchtest.

Gruß, Jörg
Antworten