Ich habe Probleme beim Verweisen auf Bedingungen, die in mehreren Zeilen mit einer for-Schleife stattfinden.Verweis auf Bedingungen in mehreren Zeilen (für Schleife)
Die Idee ist wie folgt. Es gibt einen Datenrahmen mit Spalten LastPrice und KCT. Möchte SignalBinary Spalt zu dem Datenrahmen, und wenn
1) LastPrice [j]> KCT [j] in 3 beliebigen aufeinanderfolgenden Reihen, &
2) LastPrice [j + 1] addieren - LastPrice [j + 1 + 3]> 12 in einer der Zeilen j + 1 bis j + 1 + 10 (dh 10 Zeilen darunter)
wollen dann eine 1 in SignalBinary [i] aufnehmen.
df <- data.frame(nrow =20, ncol =2)
df <- data.frame(LastPrice = c(1221,1220,1220,1217,1216,1218,1216,1216,1217,1220,1219,1218,1220,1216,1217,1218,1218,1207,1206,1205), KCT = c(1218,1218,1219,1218,1221,1217,1217,1216,1219,1216,1217,1216,1219,1217,1218,1217,1217,1217,1219,1217))
df$SignalBinary <-for(j in1:20){for(i in1:10){ifelse (df$LastPrice[j]> df$KCT[j]& df$LastPrice[j+1]> df$KCT[j+1]& df$LastPrice[j+2]> df$KCT[j+2]& df$LastPrice[j+i]- df$LastPrice[j+i+3]>12,1,0)}}
basierend auf den Daten, wäre der Code erwartet, dass eine 1 in den Zeilen 10 und 11 und 0en in den Rest aufzuzeichnen. Aber ich mache etwas falsch. Das Ausführen des Codes gibt keine Fehlermeldung, aber es erstellt kein df $ SignalBinary. Das Ausführen von df $ SignalBinary sagt NULL.
BTW der Zweck ist, den Code auf eine große Datenbank von Preisen anzuwenden, um Statistiken über binäre Signale laufen zu lassen.
Hoffe jemand kann helfen. Vielen Dank
ein Problem hier ist, darüber nachzudenken, wenn i = 20 und j = 10, wenn Sie Zugriff auf df $ LastPrice [j + i ]. Sie versuchen, aus einem Datensatz mit nur 20 Zeilen auf Zeile 30 zuzugreifen. ifelse() wirft keinen Fehler auf diese –
Sie haben Recht. Aber ich weiß leider nicht, wie ich das beheben soll. – Krug