0

我有一个时间序列的每小时降水数据,我正在尝试通过 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")

输出应将一个一小时时段、一个两小时时段和一个三小时时段识别为缺失数据。谢谢!

4

1 回答 1

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 
于 2013-11-14T22:02:52.813 回答