我有一个时间序列的小时降水数据,我试图通过QA / QC例程运行。我想要做的一件事是创建一个间隔计数的直方图,其中缺失的数据按数据缺失的时间长度分组,即缺少一小时数据的周期数,连续两个小时多少个,三个等等多少...我可以用一些嵌套循环来做这个,但想知道是否有更好的方法。
时间序列是连续的(表示所有小时)。 datetime是POSIXct,数据是数字,NA表示缺少数据。可以使用以下方法创建一个简短的样本:
precip <- structure(list(datetime = structure(c(1114905600, 1114909200,
1114912800, 1114916400, 1114920000, 1114923600, 1114927200, 1114930800,
1114934400, 1114938000, 1114941600, 1114945200, 1114948800), class = c("POSIXct",
"POSIXt"), tzone = "UTC"), precip = c(1.1, NA, 2, 0, NA, NA,
NA, 0, 0, NA, NA, 0.5, 0.3)), .Names = c("datetime", "precip"
), row.names = c(NA, -13L), class = "data.frame")
输出应识别一个一小时的时段,一个两小时的时段和一个三个小时的时段作为缺失数据。 谢谢!
答案 0 :(得分:1)
使用rle
(运行长度编码):
R> rle_res <- as.data.frame(unclass(rle(is.na(precip$precip))))
R> rle_na <- subset(rle_res, values==TRUE) # filter NA values
R> table(rle_na$length)
1 2 3
1 1 1