Erstellen von "NA" für fehlende Daten in einer Zeitreihe

8

Ich habe mehrere Dateien mit Daten, die wie folgt aussehen:

%Vor%

Manchmal fehlen Daten, aber ich habe keine NAs, die Zeilen existieren einfach nicht. Ich muss NAs erstellen, wenn die Daten fehlen. Ich konnte zwar feststellen, wann das passiert, indem ich es in ein Zoo-Objekt umwandelte und auf strikte Regelmäßigkeit prüfte (ich habe den Zoo vorher noch nie benutzt), aber ich benutzte den folgenden Code:

%Vor%

Aber die Antwort ist immer wahr!

Kann mir jemand sagen, warum nicht funktioniert? Oder noch besser, sagen Sie mir eine Möglichkeit, NAs zu erstellen, wenn die Daten fehlen (mit oder ohne Zoopaket)?

Danke

    
sbg 19.05.2011, 12:35
quelle

4 Antworten

19

Die Funktion seq verfügt über einige interessante Funktionen, mit denen Sie ganz einfach eine vollständige Sequenz von Daten generieren können. Der folgende Code kann beispielsweise verwendet werden, um eine Abfolge von Daten ab dem 25. April zu generieren:

Bearbeiten: Diese Funktion ist in ?seq.Date

dokumentiert %Vor%

Verwenden Sie nun das gleiche Prinzip, um einige Daten mit "fehlenden" Zeilen zu generieren, indem Sie die Sequenz für jeden zweiten Tag generieren:

%Vor%

Um Ihre Frage zu beantworten, können Sie mit vector subscripting oder der Funktion match ein Dataset mit NAs erstellen:

%Vor%

Um dieses Ergebnis mit den ursprünglichen vollständigen Daten zu kombinieren:

%Vor%     
Andrie 19.05.2011, 13:07
quelle
4

Im Zoopaket bedeutet "normal", dass die Serie gleichmäßig verteilt ist, außer möglicherweise für einige fehlende Einträge. Die zooreg -Klasse im Zoo-Paket ist speziell für diese Art von Serie. Beachten Sie, dass die Menge aller regulären Reihen die Menge aller gleichmäßig beabstandeten Reihen enthält, aber streng größer ist.

Die Funktion is.regular überprüft, ob eine gegebene Serie regulär ist. Das heißt, ist die Reihe zugänglich, um sie gleichmäßig beabstandet zu machen, wenn man NAs für die fehlenden Einträge einfügt?

In Bezug auf Ihre letzte Frage ist es eine FAQ. Siehe FAQ # 13 in der Zoo-FAQ, die auf der Zoo-CRAN-Seite oder von R verfügbar ist über:

%Vor%

Auch in FAQ # 13 gibt es einen illustrativen Code.

    
G. Grothendieck 19.05.2011 12:53
quelle
2

Zunächst ist zu beachten, dass z.date ein Zeichen und kein Datum ist.

So würde ich Ihr Problem mit xts (einer Unterklasse von zoo) lösen.

%Vor%     
Joshua Ulrich 19.05.2011 13:05
quelle
0

Ich musste mich mit dem ähnlichen Problem mit einer monatlichen Zeitreihe befassen. Ich habe es geschafft, zwei data.table / data.frame direkt mit der Zeitvariablen zu verbinden. Mein Punkt ist, dass Zeitreihen auch eine Art von Datensätzen sind. So können Sie jede Zeitreihe auch regelmäßig als regulären Datensatz bearbeiten. Hier ist meine Lösung:

%Vor%

Danach können Sie die Klasse des Datensatzes einfach in jede Art von Zeitreihe zurückverwandeln, die Sie haben möchten. Ich bevorzuge read.zoo .

    
Yang Bai 13.07.2016 18:20
quelle

Tags und Links