Angenommen, Sie haben Daten wie die folgenden, in denen, wie Sie sehen können, der erste Tag des Monats mehrmals wiederholt wird (Hinweis die date
Variable).Behalten Sie den ersten Tag des Monats, auch wenn es wiederholt wird in R
date exdate strike_price delta
1: 1996-01-04 1997-06-21 500000 -0.094917
2: 1996-01-04 1996-03-16 600000 0.768930
3: 1996-01-04 1996-02-17 605000 -0.286091
4: 1996-01-04 1996-12-21 600000 0.651049
5: 1996-01-04 1996-03-16 540000 -0.040929
6: 1996-01-04 1996-02-17 630000 -0.638877
7: 1996-01-05 1996-02-17 440000 0.579155
.....
51: 1996-02-04 1997-06-21 500000 -0.094917
52: 1996-02-04 1996-03-16 600000 0.768930
53: 1996-02-04 1996-02-17 605000 -0.286091
54: 1996-02-04 1996-12-21 600000 0.651049
55: 1996-02-04 1996-03-16 540000 -0.040929
56: 1996-02-04 1996-02-17 630000 -0.638877
- Was ich versuche, für jeden Monat zu tun ist, alle ersten Tage der Beobachtungen zu halten, das heißt alle Beobachtungen von
1:6
in der Menge, bezogen auf diedate
Variable. Einfach gesagt; der erste Tag eines jeden Monats ist mehr als einmal da, und ich möchte sie alle behalten, während ich die Ruhetage des Monats außer Acht lasse. - Ist es dann möglich, aus den übrigen Beobachtungen diejenigen zu wählen, die nach den Änderungen in Schritt 1 die ersten beiden frühesten
expdate
haben?
Das Datumsformat ist YYYY-mm-dd
.
Bisher gelang es mir, nur einen der ersten Tage des Monats statt all dieser Tage zu behalten. Der Code, den ich verwende, ist dies, aber er liefert nicht das gewünschte Ergebnis:
setDT(df)[order(date), .(delta[which.min(date)], date[which.min(date)]), by = .(year(date), month(date))]
Vielen Dank.
Ist Ihr Datum Variable Klasse Date? Sie können 'str (dt)' verwenden, um zu überprüfen, und 'dt [, date: = as.Date (date)]', um es zu konvertieren, wenn es im Format Ihres Beispiels ist. Wenn dies nicht das Problem ist, sollten Sie ein Dataset erstellen, das das Problem reproduzieren kann, das Sie in einem Beispieldatensatz angeben, vielleicht dput (head (dt, 20)) und sehen, dass das Problem dort wiederholt wird. Die Antwort, die ich zur Verfügung gestellt habe, funktioniert ordnungsgemäß mit den Beispieldaten. – lmo
alles ist 'as.Date'.Die Sache ist, weil ich Hunderte von verschiedenen Daten habe, die Reihenfolge von: Rang (exdate) <3 'berücksichtigt den Rang aller Exdaten des Datums und nicht pro" Gruppe "von Daten. –
Das gilt wiederum nur ohne das 'by = Argument'. In 'dtNew [, .I [Rang (exdate) <3], bis = Datum]', 'Rang (exdate)' berechnet den Rang für jedes Datum separat. – lmo