Seite 1 von 1

Auf vorherigen Wert zugreifen

Verfasst: Do Jan 11, 2018 10:06 pm
von Mr.KSS
Guten Tag,

mir liegt folgende Aufgabenstellung vor:
In der Datei "Amex Cater Star.txt" (siehe Anhang) finden Sie die täglichen diskreten Renditen von American Express, Caterpillar und Starbucks. Die Datei "USD EUR.txt" (siehe Anhang) enthält zudem die täglichen Wechselkurse zwischen USD und EUR. Schreiben Sie eine eigene, benutzerdefinierte Funktion myEURreturn(matrix1, matrix2), der die Matrixen aus den beiden Dateien übergeben werden und die die täglichen Renditen der drei Unternehmen aus Sicht eines EUR-Investors berechnen soll.


Diesbezüglich habe ich folgendes programmiert:

Code: Alles auswählen

library(tidyverse)
amex = read.table("~/EWFA (1)/3_Projekt/2/Amex_Cater_Star.txt", header = T)
amex$date = as.character(amex$date)
exch = read.table("~/EWFA (1)/3_Projekt/2/USD_EUR.txt", header=T)
exch$Mon <- ifelse(nchar(exch$Mon) == 1, paste0("0", exch$Mon), exch$Mon)
exch$Day <- ifelse(nchar(exch$Day) == 1, paste0("0", exch$Day), exch$Day)
exch$date <- paste(exch$Date, exch$Mon, exch$Day, sep = "")

myEURreturn <- function(matrix1, matrix2) {
  total = dplyr::right_join(matrix1, matrix2, by = "date") %>%
    dplyr::filter(!is.na(axp)) %>%
    dplyr::select(-c(Date, Mon, Day)) %>%
    dplyr::mutate(rentaxp_usd = (1+axp)*1000,
                  rentaxp_usd = dplyr::lag(rentaxp_usd) * (1+axp),
                  rentaxp_eur = rentaxp_usd*Value,
                  
                  rentaxp_eurch =(rentaxp_eur- dplyr::lag(rentaxp_eur))/dplyr::lag(rentaxp_eur),
                  rentaxp_eurch = rentaxp_eurch*100,
                  
                  rentcat_usd = (1+cat)*1000,
                  rentcat_usd = dplyr::lag(rentcat_usd) * (1+cat),
                  rentcat_eur = rentcat_usd*Value,
                  
                  rentcat_eurch =(rentcat_eur- dplyr::lag(rentcat_eur))/dplyr::lag(rentcat_eur),
                  rentcat_eurch = rentcat_eurch*100,
                  
                  
                  rentsbux_usd = (1+sbux)*1000,
                  rentsbux_usd = dplyr::lag(rentsbux_usd) * (1+sbux),
                  rentsbux_eur = rentsbux_usd*Value,
                  
                  rentsbux_eurch =(rentsbux_eur- dplyr::lag(rentsbux_eur))/dplyr::lag(rentsbux_eur),
                  rentsbux_eurch = rentsbux_eurch*100)
    
  
}

test = myEURreturn(amex, exch)
Mein Problem ist, dass R auf den jeweiligen Wert des vorherigen Tages zugreifen und mit diesem Wert weiterrechnen soll.

Kann mir jemand mit einer Verbesserung meines Codes weiterhelfen?

Vielen Dank und viele Grüße.

Re: Auf vorherigen Wert zugreifen

Verfasst: Fr Jan 12, 2018 8:38 am
von jogo
Hallo KSS,

man so eine Konstruktion verwenden wie

Code: Alles auswählen

c(NA, head(x, -1))
Beispiel:

Code: Alles auswählen

x <- 1:10
c(NA, head(x, -1))
Gruß, Jörg

Re: Auf vorherigen Wert zugreifen

Verfasst: Fr Jan 12, 2018 12:25 pm
von Mr.KSS
Danke für die Antwort, nur leider bringt mir das in dem oben geschilderten Fall nichts.

Ich habe beispielsweise folgende Zahlenreihenfolge:

990
890
912
915
1003

Doch wie sagt ich dem Programm, dass es den vorherigen Wert zur Berechnung heranziehen soll?

Re: Auf vorherigen Wert zugreifen

Verfasst: Fr Jan 12, 2018 3:33 pm
von jogo

Code: Alles auswählen

d <- data.frame(aktuell=c(990, 890, 912, 915, 1003))
d
d$vorher <- c(NA, head(d$aktuell, -1))
d
Nun steht in jeder Zeile nicht nur der aktuelle Wert, sondern auch jeweils der vorherige.

Gruß, Jörg