Seite 1 von 1

neue Variable hinzufügen

Verfasst: Do Feb 25, 2021 10:47 am
von gming11
Liebe Leute,

in einer Aufgabe sollte ich eine neue Variable definieren, welche ein Quotient in Abhängigkeit von der Zeit und des Basiswerts ist.

Mein longitudinaler Datensatz schaut wie folgt aus
  1. ID- Jahr - Temperatur
  • 1 1997 - 20
  • 1 1998 - 22
  • 1 1999 - 21
...
  • 2 1997 - 23
  • 2 1998 - 24
...

Natürlich mehr Messzeitpunkte aber im Grunde sollte eine neue Variable jeweils vom Basis-Jahr 1997 ausgehend den Quotienten der Temperatur (im ersten Beispiel 22/20 bzw. 21/20 wobei 20 ja das Basis-Jahr 1997 repräsentiert und dies für die nächsten 20 Jahre, die ich hier nur ausgelassen haben. Wie im kurzen Ausschnitt dargestellt gibt es verschiedene IDs also Messpunkte 1-15, wobei der Startpunkt immer das Jahr 1997 ist.

Geht dies elegant mit einer For-Schleife oder wie ist hier sinnvoll vorzugehen?

Re: neue Variable hinzufügen

Verfasst: Do Feb 25, 2021 11:20 am
von Athomas
https://stackoverflow.com/questions/148 ... s-by-group
Dort die erste Antwort, denn die benutzt data.table :) !
Vorher nach ID und Jahren sortieren!

Re: neue Variable hinzufügen

Verfasst: Do Feb 25, 2021 12:14 pm
von bigben
...und ich verstehe die Frage anders, als ich glaube, dass Athomas die Frage verstanden hat. Um solche Missverständnisse auszuräumen gibt es einen ganz einfachen Weg: Du stellst Beispieldaten zur Verfügung, berechnest von Hand, wie Du Dir das Ergebnis vorstellst und stellst auch die Sollwerte im Forum ein.

Beispieldaten und Wunschergebnis bitte nicht wie oben als Text, auch nicht als Bildschirmfoto, sondern als R-Code. So zum Beispiel könnte das aussehen:

Code: Alles auswählen

bsp <- data.frame(id = gl(3,5),
                  jahr = rep(1997:2001, 3),
                  temperatur = c(20, 22, 21, 21, 20,  23, 24, 25, 39, 40, 
                                 10, 12, 10, 16,  5))
print(bsp)
Das kann jeder dann schnell in seine Konsole kopieren und erdachte Lösungsmöglichkeiten selbst ausprobieren. FAlls Du eine Lösung suchst, die mit Missings umgehen kann, dann sollten auch NA im Beispieldatensatz vorkommen.

LG,
Bernhard

Re: neue Variable hinzufügen

Verfasst: Do Feb 25, 2021 12:28 pm
von Athomas
...und ich verstehe die Frage anders, als ich glaube, dass Athomas die Frage verstanden hat.
Ja, ich liege falsch! Ich dachte, er wolle den Quotienten zweier aufeinander folgender Jahre berechnen :oops: ...

Re: neue Variable hinzufügen

Verfasst: Do Feb 25, 2021 12:50 pm
von bigben
Wer weiß, ohne reproduzierbares Minimalbeispiel kann es immer auch ein Missverständnis in die andere Richtung sein. Wenn gming11 Beispieldaten in R hat, die sie/er manuell zum Vergleichen angeschaut hat, kann sie/er prüfen, ob das hier in die richtige Richtung geht:

Code: Alles auswählen

library(data.table)
setDT(bsp)
bsp[, relativ := temperatur/first(temperatur), by = id]
print(bsp)
oder vielleicht eher sowas hier?

Code: Alles auswählen

bsp <- data.frame(id = gl(3,5),
                  jahr = rep(1997:2001, 3),
                  temperatur = c(20, 22, 21, 21, 20,  23, 24, 25, 26, 27, 
                                 10, 12, 10, 16,  5))
bsp$relativ <- unlist(tapply(bsp$temperatur, bsp$id, function(x) x/x[1]))
print(bsp)
LG,
Bernhard

Re: neue Variable hinzufügen

Verfasst: Do Feb 25, 2021 1:48 pm
von gming11
Hallo ,

vielen lieben Dank für eure Antworten letzteres war genau so etwas wie ich es gebraucht habe Danke für den Tipp mit Data Table! Und sorry für meine schlechte Darstellungsform, es war mein erster Post hier, ich werde zukünftig in Beispielloses arbeiten danke!!

Re: neue Variable hinzufügen

Verfasst: Do Feb 25, 2021 1:56 pm
von bigben
Alles gut, wenn wir nicht wollten, dass Du weitere Fragen stellst, würden wir nicht so ausführlich auf den Beispieldaten und dem Coder herumreiten. Du wirst bei zukünftigen Fragen sehen, dass es hilft, treffende und brauchbare Antworten zu bekommen.

LG,
Bernhard