Hallo Katharina,
ja, das Beispiel macht es wesentlich deutlicher. Wie ich Deinem Beispiel entnehme, kann t = 0 irgendein Zeitpunkt sein, keineswegs der erste Trade jedes Users. Das Beispiel ist aber so kurz, dass vieles auch offen bleibt. Beispielsweise, ob die Trades nach Usern sortiert vorliegen, oder nicht. Ist für den Moment auch erst einmal egal.
Katharina.S hat geschrieben: So Dez 24, 2017 10:49 am
Ein Beispiel für meinen Datensatz wäre:
Trade User Investment Ergebnis
1 4 3 +3
2
5 100 +5,6
3
5 70
-7
4
5 65 +2
Ein Beispiel für eine R gerechte Präsentation dieses Datensatzes ware
Code: Alles auswählen
handel <- read.table(text="Trade User Investment Ergebnis
1 4 3 +3
2 5 100 +5,6
3 5 70 -7
4 5 65 +2 ", header = TRUE, dec=",")
Copy&Paste, dann hat man die Daten in R und kann etwas damit tun.
Ich schlage Dir folgenden Einstieg vor:
Code: Alles auswählen
tapply(X = handel$Ergebnis, INDEX = handel$User, FUN = function(x) which(x < 0))
tapply wendet eine Funktion FUN auf jedes Handelsergebnis an und zwar getrennt nach Usern. Du erhälst für jeden User getrennt ein Ergebnis der Funktion FUN. In meinem Einstiegsbeispiel lautet FUN: which(x < 0). Also die Frage, der wievielte Trade eines jeden Nutzers mit einem negativen Ergebnis abgeschlossen wurde. Ergebnis:
Code: Alles auswählen
> tapply(X = handel$Ergebnis, INDEX = handel$User, FUN = function(x) which(x<0))
$`4`
integer(0)
$`5`
[1] 2
Für den User 4 wurde ein leerer Vector übergeben, weil 4 keine Verluste gemacht hat. Für den User 5 wird ein Vektor mit dem einzigen Wert 2 zurück geliefert, weil nur der zweite Trade von 5 mit einem Verlust abgeschlossen wurde.
Es käme im Folgenden also darauf an, eine Funktion FUN zu schreiben, die aus einem Ergebnisvektor für den User x die Informationen extrahiert, die Du zur Beantwortung Deiner Frage brauchst.
Du kannst ja die Tage mal nutzen und versuchen, folgenden Code zu verstehen. Der könnte eine ganz nützliche Richtung aufweisen:
Code: Alles auswählen
handel <- read.table(text="Trade User Investment Ergebnis
1 4 3 +3
2 5 100 +5,6
3 5 70 -7
4 5 65 +2 ", header = TRUE, dec=",")
mittel_nach_negativ <- function(x){
negative <- which(x < 0)
nach_negative <- negative + 1
mittel <- mean(x[nach_negative], na.rm = TRUE)
}
tapply(X = handel$Ergebnis, INDEX = handel$User, FUN = mittel_nach_negativ)
Frohe Feiertage,
Bernhard