Wie kann der längste Bereich aufeinanderfolgender Jahre in einer Liste mit Start- und Enddatum identifiziert werden?

8

Angenommen, ich habe eine Liste von Ganzzahlen für das Jahr wie folgt:

%Vor%

Was ist der am wenigsten komplizierte und meist R-ähnliche Weg, um den längsten Bereich aufeinanderfolgender Jahre zusammen mit dem Startdatum und dem Enddatum zu identifizieren? Ich erwarte: Länge: 10, Startjahr: 1997, Endjahr: 2006.

Ich habe ein wenig im Web einschließlich dieser Website gesucht und die Leute scheinen in diesem Fall die Verwendung von rle () zu empfehlen. Also ist mein Ansatz zur Lösung des Problems wie folgt:

%Vor%

Aber das erscheint schrecklich nicht-elegant. Es muss einen weniger komplizierten Weg geben !? Ich möchte nur Base R verwenden, also kein Paket. Ich habe gelesen, dass man auch etwas wie which(diff()!= 1) verwenden kann, um die Pausen zu identifizieren und von dort weiterzugehen?

    
harry 22.07.2015, 17:01
quelle

3 Antworten

5

Ich mag den Ansatz mit diff und rle , würde es aber so machen

%Vor%     
jenesaisquoi 22.07.2015, 17:41
quelle
3

dplyr Hier ist ein anderer Weg:

%Vor%

Für die Dauer des Laufs können Sie (ends-starts+1)[maxrun] verwenden. Die data.table-Funktion shift ist eine andere Option anstelle von dplyrs lag .

keine Pakete Hier ist eine einfache Verzögerungsfunktion, die Sie anstelle des Ladens eines Pakets schreiben können:

%Vor%     
Frank 22.07.2015 17:22
quelle
1

Hier ist ein weiterer Ansatz mit Base R.

%Vor%     
Jacob H 22.07.2015 19:45
quelle

Tags und Links