Ich habe, was hoffentlich eine einfache Frage ist. Ich habe ein xts
Objekt ähnlich den folgenden:Führen Sie Operationen am selben Tag mit XTS in R
| MarketPrice |
----------------------------------------
2007-05-04 10:15:33.546 | 5.32 |
----------------------------------------
2007-05-04 10:16:42.100 | 5.31 |
----------------------------------------
2007-05-04 10:17:27.546 | NA |
----------------------------------------
2007-05-04 10:20:50.871 | 5.35 |
----------------------------------------
2007-05-04 10:21:38.652 | 5.37 |
Grundsätzlich würde Ich mag den MarketPrice
Index unmittelbar vor einem Zeitpunkt zu finden, während auch NA
Werte ommitting. Nehmen wir an, wir beginnen zum Zeitpunkt 2007-05-04 10:20:50.871
mit einem Index von 4 im Objekt. Das bedeutet also, dass der Marktpreis unmittelbar vor dieser Zeit 5.31
ist, der einen Index von 2 im Objekt hat. Um diese Aufgabe zu erfüllen habe ich eine ähnliche Funktion wie die folgende geschrieben:
MPFunction <- function(t,df){
ind <- t
while(t>1){
t=t-1
if ((index(df[t]) != index(df[ind])) && !(is.na(df[t,"MarketPrice"]))) {
return(t)
}
}
}
Und dies führt die Aufgabe, da die erste Bedingung in der Anweisung überprüft, wenn sie an die Zeiten in dem Index des xts
Objekt stellen Sie sicher, sind unterschiedlich und die zweite Bedingung überprüft, um sicherzustellen, dass es keinen NA
Wert in der Spalte MarketPrice
gibt.
Allerdings stoße ich jetzt auf ein Problem, wenn ich mir mehrere Tage anschaue. Lassen Sie uns sagen, dass ich jetzt ein xts
Gegenstand haben wie folgt:
| MarketPrice |
----------------------------------------
2007-05-03 16:59:58.921 | 5.32 |
----------------------------------------
2007-05-04 10:12:27.546 | NA |
----------------------------------------
2007-05-04 10:20:50.871 | 5.35 |
----------------------------------------
Wenn ich bei Index 3 (dh zum Zeitpunkt 2007-05-04 10:20:50.871
), dann starten, wenn ich den ersten Index vor dieser Zeit finden wollen, die keine NA
hat Wert in der MarketPrice
Spalte, wird es zum Index 1 gehen, der 2007-05-03 16:59:58.921
ist. Das Problem ist jedoch, dass dies an einem anderen Tag ist, und ich möchte sicherstellen, dass ich nur den Index der MarketPrice
Werte am selben Tag extrahiere.
Grundsätzlich habe ich mich gefragt, ob es eine schnelle Änderung gibt, die ich zu meinem MPFunction
oben in der IF-Anweisung machen kann, die mir erlauben wird, den Index des MarketPrice vom vorherigen Tag zu finden. Außerdem möchte ich das xts
Objekt nicht am Tag aufteilen, da es die Dinge ziemlich kompliziert machen würde, wenn ich es tun würde.
Jetzt habe ich bereits einige Idee, wie man das löst (wie die Verwendung der strptime
Funktion, um Daten usw. zu überprüfen), aber das sind alle zeitaufwendigen Methoden, so dass ich gehofft hatte, eine Methode zu finden, die viel ist schneller, also wenn jemand irgendwelche Ideen hat, würde ich es begrüßen. Danke im Voraus.