gpt4 book ai didi

r - 如何通过循环替换时间序列数据中的缺失值?

转载 作者:行者123 更新时间:2023-12-04 12:18:24 27 4
gpt4 key购买 nike

我正在尝试创建循环以用 value == 0 替换丢失的时间序列数据。

这是我的数据:

df
Times value
05-03-2018 09:00:00 1
05-03-2018 09:01:26 2
05-03-2018 09:04:28 1
05-03-2018 09:07:05 2
05-03-2018 09:09:05 1

我想要的输出是:

Times                   value
05-03-2018 09:00:00 1
05-03-2018 09:01:26 2
05-03-2018 09:02:00 0
05-03-2018 09:03:00 0
05-03-2018 09:04:28 1
05-03-2018 09:05:00 0
05-03-2018 09:06:00 0
05-03-2018 09:07:05 2
05-03-2018 09:08:00 0
05-03-2018 09:09:05 1

应创建数据中缺失的分钟并将其指定为 0 值。

我该怎么办?创建缺少分钟的新虚拟表或进行序列循环?

最佳答案

您可以使用 dplyr 和 padr 软件包来完成此操作。 padr 对于扩展日期之间的日期时间序列或添加缺失值非常有用。

library(dplyr)
library(padr)

df1 %>%
thicken(interval = "min") %>% # roll time series up to minutes
pad(by = "Times_min") %>% # add missing minute intervals
fill_by_value(value) %>% # fill missing values with 0
mutate(Times = if_else(is.na(Times), Times_min, Times)) %>% # fill NA's in Times column
select(-Times_min) # drop not needed column

pad applied on the interval: min
Times value
1 2018-03-05 09:00:00 1
2 2018-03-05 09:01:26 2
3 2018-03-05 09:02:00 0
4 2018-03-05 09:03:00 0
5 2018-03-05 09:04:28 1
6 2018-03-05 09:05:00 0
7 2018-03-05 09:06:00 0
8 2018-03-05 09:07:05 2
9 2018-03-05 09:08:00 0
10 2018-03-05 09:09:05 1

数据:

df1 <- structure(list(Times = structure(c(1520240400, 1520240486, 1520240668, 
1520240825, 1520240945), class = c("POSIXct", "POSIXt"), tzone = "UTC"),
value = c(1, 2, 1, 2, 1)), row.names = c(NA, -5L), class = "data.frame")

关于r - 如何通过循环替换时间序列数据中的缺失值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53235756/

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