2016-09-09 5 views
-5

Angenommen, ich habe einen Datensatz mit 3 Spalten, A, B und C, die Daten für eine große Anzahl von Zeilen enthalten. Wie kann ich eine Teilmenge erstellen, die die Zeilen auslässt, in denen das Datum in C nicht innerhalb des Datumsbereichs von A und B liegt?R-Teilmenge basierend auf Datumsbereich

+1

Hallo Jason, Willkommen bei StackOverflow. Bitte werfen Sie einen Blick auf [this] (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example) und versuchen Sie, uns ein minimal reproduzierbares Beispiel zu geben. –

+0

Auch diese Art von Operation wird "Subsetting" genannt - dies sollte Ihnen helfen, die Antwort leicht googlen. Wenn Sie nichts (unwahrscheinlich) finden, * dann * stellen Sie hier eine Frage (und geben Sie uns einige Daten und was Sie bisher versucht haben). – jakub

+0

Mögliches Duplikat von [R - prüfen, ob die Zeichenfolge Daten innerhalb eines bestimmten Datumsbereichs enthält] (http://stackoverflow.com/questions/31716187/r-check-if-string-contains-dates-within-specific-date-range) – Sotos

Antwort

0

Fragen Sie etwas wie das Folgende?

Sagen wir Ihre erste Datenrahmen ist df, die folgende ist:

df 
      A   B   C 
1 2016-02-16 2016-03-21 2016-01-01 
2 2016-07-07 2016-06-17 2016-01-31 
3 2016-05-19 2016-09-10 2016-03-01 
4 2016-01-14 2016-08-21 2016-04-01 
5 2016-09-02 2016-06-15 2016-05-01 
6 2016-05-09 2016-07-17 2016-05-31 
7 2016-06-13 2016-06-23 2016-07-01 
8 2016-09-17 2016-03-11 2016-07-31 
9 2016-03-09 2016-05-13 2016-08-30 
10 2016-01-20 2016-09-01 2016-09-30 

Nun, wenn Sie die folgende Teilmenge Operation zu tun, werden wir die folgenden Datenrahmen Teilmenge erhalten:

df.sub <- df[apply(df, 1, function(x) (x[3] < min(x[1], x[2])) | 
             (x[3] > max(x[1], x[2]))),] 
df.sub 
      A   B   C 
1 2016-02-16 2016-03-21 2016-01-01 
2 2016-07-07 2016-06-17 2016-01-31 
3 2016-05-19 2016-09-10 2016-03-01 
5 2016-09-02 2016-06-15 2016-05-01 
7 2016-06-13 2016-06-23 2016-07-01 
9 2016-03-09 2016-05-13 2016-08-30 
10 2016-01-20 2016-09-01 2016-09-30 

Ich hoffe es hilft.

Verwandte Themen