r - 如何为时间序列中的缺失数据创建 "NA"

标签 r time-series missing-data

我有几个看起来像这样的数据文件:

X code year month day pp  
1 4515 1953     6   1  0  
2 4515 1953     6   2  0  
3 4515 1953     6   3  0  
4 4515 1953     6   4  0  
5 4515 1953     6   5  3.5

有时会丢失数据,但我没有 NA,这些行根本不存在。当数据丢失时,我需要创建 NA。我虽然可以通过将其转换为动物园对象并检查严格的规律性来确定何时发生这种情况(我以前从未使用过动物园),但我使用了以下代码:
z.date<-paste(CET$year, CET$month, CET$day, sep="/")
z <- read.zoo(CET,  order.by= z.date )
reg<-is.regular(z, strict = TRUE)

但答案永远是正确的!

谁能告诉我为什么不工作?或者甚至更好,告诉我一种在数据丢失时创建 NA 的方法(有或没有 zoo 包)?

谢谢

最佳答案

seq function 有一些有趣的功能,您可以使用它们轻松生成完整的日期序列。例如,以下代码可用于生成从 4 月 25 日开始的日期序列:

编辑:此功能记录在 ?seq.Date

start = as.Date("2011/04/25")
full <- seq(start, by='1 day', length=15)
full

 [1] "2011-04-25" "2011-04-26" "2011-04-27" "2011-04-28" "2011-04-29"
 [6] "2011-04-30" "2011-05-01" "2011-05-02" "2011-05-03" "2011-05-04"
[11] "2011-05-05" "2011-05-06" "2011-05-07" "2011-05-08" "2011-05-09"

现在使用相同的原理来生成一些带有“缺失”行的数据,方法是每 2 天生成一次序列:
partial <- data.frame(
    date=seq(start, by='2 day', length=6),
    value=1:6
)
partial

        date value
1 2011-04-25     1
2 2011-04-27     2
3 2011-04-29     3
4 2011-05-01     4
5 2011-05-03     5
6 2011-05-05     6

要回答您的问题,可以使用矢量下标或 match使用 NA 创建数据集的函数:
with(partial, value[match(full, date)])
 [1]  1 NA  2 NA  3 NA  4 NA  5 NA  6 NA NA NA NA

将此结果与原始完整数据结合起来:
data.frame(Date=full, value=with(partial, value[match(full, date)]))
         Date value
1  2011-04-25     1
2  2011-04-26    NA
3  2011-04-27     2
4  2011-04-28    NA
5  2011-04-29     3
6  2011-04-30    NA
7  2011-05-01     4
8  2011-05-02    NA
9  2011-05-03     5
10 2011-05-04    NA
11 2011-05-05     6
12 2011-05-06    NA
13 2011-05-07    NA
14 2011-05-08    NA
15 2011-05-09    NA

关于r - 如何为时间序列中的缺失数据创建 "NA",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6058677/

相关文章:

c# - 如何要求套接字等待更多数据到来

java - 根据时间数组重新采样数据 - JAVA

hadoop - 如何根据 Hive 中的另一个表 b 替换表 a 中的值?

r - 如何生成像 cor() 这样的线性回归矩阵

r - ggplot在分面时删除特定的x轴标签

r - 如何使用端口号从 R 终止 Windows 应用程序?

python - pandas 为每个 DatetimeIndex 条目获取第一个过滤行的有效方法

python - 查找 pandas 中两个日期之间差异的最简单方法

python - 还有比 pandas fillna() 更快的方法吗?

python - 在 pandas 中使用 groupby 用模式替换缺失值时出现 IndexError