gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 02:42:39 26 4
gpt4 key购买 nike

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

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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com