Entferne einen Bereich in data.table

8

Ich versuche einige Zeilen von einer Datentabelle auszuschließen, basierend auf, sagen wir, Tagen und Monaten - ausgenommen beispielsweise Sommerferien, die immer zum Beispiel am 15. Juni beginnen und am 15. des nächsten Monats enden. Ich kann diese Tage basierend auf dem Datum extrahieren, aber da die .Date-Funktion schrecklich langsam ist, habe ich separate Integer-Spalten für Monat und Tag, und ich möchte nur mit ihnen arbeiten.

Es ist einfach, die angegebenen Einträge mit

auszuwählen %Vor%

Gibt es einen Weg, wie man die " data.tables " (die ursprünglichen und die von mir ausgewählten) "unterscheiden" kann? (Warum nicht Teilmenge? Vielleicht fehlt mir etwas Einfaches, aber ich möchte nicht Tage wie 10/6, 31/7 ausschließen.)

Ich bin mir bewusst, wie man das mit Join machen kann, aber nur Tag für Tag

%Vor%

Kann jemand helfen, es auf eine allgemeinere Weise zu lösen?

    
krhlk 22.10.2012, 18:32
quelle

2 Antworten

3

Gute Frage. Ich habe den Fragetitel entsprechend der Frage bearbeitet.

Ein einfacher Ansatz, der as.Date vermeidet, der gut liest:

%Vor%

Das ist wahrscheinlich in vielen Fällen schnell genug. Wenn Sie viele verschiedene Bereiche haben, sollten Sie einen Gang höher schalten:

%Vor%

Das ist ein bisschen lang und fehleranfällig, weil es DIY ist. Eine Idee ist also, dass eine Spalte list in einer Tabelle i eine Bereichsabfrage darstellt ( FR # 203 , wie eine binäre Suche %between% ). Dann ein not-join (auch noch nicht implementiert, FR # 1384 ) könnte mit der Listenspaltenbereich-Abfrage kombiniert werden, um genau das zu tun, was Sie gefragt haben:

%Vor%

Das würde sich auf verschiedene Weise auf mehrere verschiedene Bereiche oder den gleichen Bereich für viele verschiedene IDs erstrecken; d. h. mehr Zeilen, die zu i hinzugefügt wurden.

    
Matt Dowle 22.10.2012, 21:08
quelle
1

Basierend auf der Antwort hier könnten Sie etwas wie

ausprobieren %Vor%

Wenn Ihre Daten mindestens einen Eintrag für jeden Tag enthalten, den Sie ausschließen möchten, ist na.omit möglicherweise nicht erforderlich.

    
BenBarnes 22.10.2012 19:10
quelle

Tags und Links