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?
Ich mag den Ansatz mit diff
und rle
, würde es aber so machen
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%Tags und Links r