Seite 1 von 1

sich selbst erweitender Vektor

Verfasst: Di Okt 01, 2019 3:41 pm
von timduncan200
hallo zusammen,
folgende Frage

Ich habe eine Datenreihe mit monatlichen Werten von 1971 bis 08.2019.

Ich habe zu Beginn eine Variable definiert, die 2019 minus 1971 rechent. Dies ist dann meine Jahreszahl (Jahre = 48)

Wenn im Januar 2020 neue Werte vorhanden sind, passt der fest definierte Vektor nicht.

Frage: Wie schaffe ich es den Eingangsvektor so variabel zu halten, dass sich dieser mit neuen Jahren automatisch erneuert?

Danke für Anregungen

Re: sich selbst erweitender Vektor

Verfasst: Di Okt 01, 2019 4:28 pm
von bigben
Hallo timduncan200,

Ich verstehe Dein Problem nicht. Wenn Du immer die Jahreszahl einer Beobachtung minus 1971 rechnest hast Du immer die Anzahl der Jahre seit Beginn der Beobachtungen. Wo ist das Problem?

LG,
Bernhard

Re: sich selbst erweitender Vektor

Verfasst: Di Okt 01, 2019 5:41 pm
von timduncan200
Hallo Bernhard,

mir geht es darum, dass ich keine Berechnungen mehr persönlich durchführen muss. Ich möchte die Variable Jahresanzahl, so flexibel gestalten, dass sich diese automatisch um ein Jahr erneuert, wenn wir ein neues haben. Mit der Variable Jahresanzahl rechene ich dann im Skript weiter.

BG Stephen

Re: sich selbst erweitender Vektor

Verfasst: Di Okt 01, 2019 7:31 pm
von bigben
Hallo Stephen,

ohne wesentlich mehr Kontext verstehe ich das nicht. Variablen erneuern sich nicht. Du kannst Code schreiben, der Die Variable erneuert.

LG,
Bernhard

Re: sich selbst erweitender Vektor

Verfasst: Di Okt 01, 2019 10:55 pm
von EDi
Ich verstehe es auch nicht...

Code: Alles auswählen

data <- 1971:2019
data-1971

newdata <- 1971:2019 
newdata-1971

myfunction <- function(x, ref = 1971) {
  x - ref
}

myfunction(data)
myfunction(data, 1972)
myfunction(newdata)
myfunction(newdata, 1972)
mir geht es darum, dass ich keine Berechnungen mehr persönlich durchführen muss. Ich möchte die Variable Jahresanzahl, so flexibel gestalten, dass sich diese automatisch um ein Jahr erneuert, wenn wir ein neues haben.
Wenn du automatisieren willst (ohne persönliche durchführung), dann schreib einen cron-job [ https://de.wikipedia.org/wiki/Cron ] der dein R-Skript aufruft (z.B. mit Rscript <deinscript.R>).
Aber das ist ohne Kontext alles nur spekulation...

Re: sich selbst erweitender Vektor

Verfasst: Di Okt 01, 2019 11:20 pm
von EDi
Das hier wäre auch ein "sich selbst erweitender Vektor":

Code: Alles auswählen

x <- NULL
while(length(x) < length(x) + 1) {
  message("Vektor lenght: ", length(x))
  x <- c(x, 1)
}

Re: sich selbst erweitender Vektor

Verfasst: Mi Okt 02, 2019 8:56 am
von timduncan200
Sorry, dass ich mich so kompliziert ausdrücke. R ist noch ein wenig neu für mich.
Nochmal ein Versuch.

Für mich persönlich geht es darum, dass ich zu Beginn des Skriptes eine Variable (Jahreszahl=49) fix definiert habe. Zahlenreihe von 1971=1 bis 2019=49.
Diese definiere ich zu Beginn des Skriptes einmal und arbeite damit im Skript weiter. Beispielsweise, wenn es darum geht die Daten so aufzubereiten, dass ich damit arbeiten kann oder innerhalb der mit den Spalten verbundenen Jahreszahl ein Subset bilde.

Wenn durch meinen Downloadbefehl neue Daten eingeladen werden (sprich 2020), stimmt die definierte Variable Jahreszahl ja nicht mehr, da ein neues Jahr hinzugekommen ist.

In der Hoffnung, dass es nun ein wenig verständlicher ist.

Danke Euch allen

Re: sich selbst erweitender Vektor

Verfasst: Mi Okt 02, 2019 8:59 am
von timduncan200
Hey EDI, dein Beispiel kommt dem was ich versuche schon ganz nahe. In deiner ersten Antwort ist 2019 aber ebenfalls fix definiert. Wenn ich ein neues Jahr habe muss sich meine Variable durch einen Code erweitern

Re: sich selbst erweitender Vektor

Verfasst: Mi Okt 02, 2019 9:04 am
von jogo
Hallo Stephen,

willkommen im Forum!
Bitte gib uns ein reproduzierbares Beispiel mit Daten und Code
(siehe viewtopic.php?f=20&t=11 ); nur so sind konkrete (d.h. für Dich passende Antworten möglich).

Gruß, Jörg

Re: sich selbst erweitender Vektor

Verfasst: Mi Okt 02, 2019 9:14 am
von bigben
Hallo timdoncan200,

die Erwähnung eines Skripts macht die Anfrage schon verständlicher. Zuvor hatte ich an sowas wie Zellen in Excel gedacht, die sich ja tatsächlich selbst erneuern. Jörg hat mit seinem Post recht, dennoch mache ich einen Versuch Codebeispiel. Wenn das nicht trifft, schick bitte auf das minimum eingekürzten aber verständlichen Code.

Nehmen wir an, Du hast eine Zahlenreihe, mit lauter Jahreszahlen darin:

Code: Alles auswählen

Zahlenreihe <- c(1971, 1971, 1971, 1972, 1973, 1973, 1974)
Dann bestimmt sich die Anzahl der darin vorhandenen verschiedenen Jahre zu

Code: Alles auswählen

Jahreszahl <- length(unique(Zahlenreihe))
Alternativ der Abstand zwischen kleinster und größter Zahl:

Code: Alles auswählen

Jahreszahl <- max(Zahlenreihe) - min(Zahlenreihe)
LG,
Bernhard