Auf vorherigen Wert zugreifen

Wie erweitere ich R um eigene Funktionen oder Pakete? Welches Paket ist passend für meine Fragestellung?

Moderatoren: EDi, jogo

Antworten
Mr.KSS
Beiträge: 4
Registriert: Fr Dez 22, 2017 5:55 pm

Auf vorherigen Wert zugreifen

Beitrag von Mr.KSS » Do Jan 11, 2018 10:06 pm

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.
Dateianhänge
USD_EUR.txt
(43.12 KiB) 9-mal heruntergeladen
Amex_Cater_Star.txt
(90.79 KiB) 8-mal heruntergeladen

jogo
Beiträge: 613
Registriert: Fr Okt 07, 2016 8:25 am

Re: Auf vorherigen Wert zugreifen

Beitrag von jogo » Fr Jan 12, 2018 8:38 am

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

Mr.KSS
Beiträge: 4
Registriert: Fr Dez 22, 2017 5:55 pm

Re: Auf vorherigen Wert zugreifen

Beitrag von Mr.KSS » Fr Jan 12, 2018 12:25 pm

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?

jogo
Beiträge: 613
Registriert: Fr Okt 07, 2016 8:25 am

Re: Auf vorherigen Wert zugreifen

Beitrag von jogo » Fr Jan 12, 2018 3:33 pm

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

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast