次のデータフレームがあります
t <- strptime(c("2012-01-01 00:00:00","2012-01-01 01:00:00", "2012-01-01 02:00:00", "2012-01-01 05:00:00", "2012-01-01 06:00:00"), format ="%Y-%m-%d %H:%M:%S");t
d1 <- 2:6
d2 <- 15:11
dfr <- data.frame(t, d1, d2);dfr
t d1 d2
2012-01-01 00:00:00 2 15
2012-01-01 01:00:00 3 14
2012-01-01 02:00:00 4 13
2012-01-01 05:00:00 5 12
2012-01-01 06:00:00 6 11
「2012-01-01 03:00:00」と「2012-01-01 04:00:00」のデータが欠落していることがわかります。
欠落しているデータを見つけるために、最初に正しい時間ステップを生成し、それを以下のように「t」列と比較しました。
t1Gen <- strptime("2012-01-01 00:00:00",format="%Y-%m-%d %H:%M:%S");
t2Gen <- strptime("2012-01-01 06:00:00",format="%Y-%m-%d %H:%M:%S");
tGen <- seq(t1Gen,t2Gen, 3600);tGen
"2012-01-01 00:00:00 CET"
"2012-01-01 01:00:00 CET"
"2012-01-01 02:00:00 CET"
"2012-01-01 03:00:00 CET"
"2012-01-01 04:00:00 CET"
"2012-01-01 05:00:00 CET"
"2012-01-01 06:00:00 CET"
mdfr <- match(tGen,dfr$t);mdfr
[1] 1 2 3 NA NA 4 5
subfr <- subset(mdfr, is.na(mdfr));subfr
[1] NA NA
一致機能を使用すると、2 つの要素が "NA" で欠落として抽出されます。ここでの目的は、欠落している 2 つの行を「-99」で埋めて、データが欠落していることを示し、結果のデータフレームを次のようにすることです。
t d1 d2
2012-01-01 00:00:00 2 15
2012-01-01 01:00:00 3 14
2012-01-01 02:00:00 3 14
2012-01-01 03:00:00 -99-99
2012-01-01 04:00:00 -99-99
2012-01-01 05:00:00 5 12
2012-01-01 06:00:00 6 11
私はこの時点まで立ち往生しています。これに関する助けをいただければ幸いです。PS: 他のコードも同様に歓迎されます。ありがとう