【发布时间】:2019-07-04 09:25:34
【问题描述】:
我正在处理需要连续时间戳的时间序列数据,但在捕获时几乎没有丢失数据时间戳点,如下所示,
DF
ID Time_Stamp A B C
1 02/02/2018 07:45:00 123 567 434
2 02/02/2018 07:45:01
..... ...
5 02/02/2018 07:46:00
6 02/02/2018 07:46:10 112 2323 2323
如上面的示例 df 所示,时间戳一直持续到第 5 行,但错过了在第 5 行和第 6 行之间捕获 10 秒的数据。我的数据框大约有 60000 行,手动识别缺失值很繁琐。因此,我一直在寻找使用 R
自动化处理缺失值的过程我的结果数据框应该如下图,
ID Time_Stamp A B C
1 02/02/2018 07:45:00 123 567 434
2 02/02/2018 07:45:01
..... ...
5 02/02/2018 07:46:00 123 567 434
5.1 02/02/2018 07:46:01 123 567 434
5.2 02/02/2018 07:46:02 123 567 434
5.3 02/02/2018 07:46:03 123 567 434
5.4 02/02/2018 07:46:04 123 567 434
5.5 02/02/2018 07:46:05 123 567 434
5.6 02/02/2018 07:46:06 123 567 434
5.7 02/02/2018 07:46:07 123 567 434
5.8 02/02/2018 07:46:08 123 567 434
5.9 02/02/2018 07:46:09 123 567 434
6 02/02/2018 07:46:10 112 2323 2323
6.1 02/02/2018 07:46:11 112 2323 2323
即我在缺失值之前的最后一行。它是第 5 行的值,应该填充相同的值,直到下一个值可用。
我尝试使用以下代码将 0 添加为值。但不能对缺失值的前一行值做
df1<- df %>%
complete(Timestamp = seq(min(Timestamp), max(Timestamp), by = "sec")) %>%
mutate_at(vars(A:C), ~replace(., is.na(.), 0 )) %>%
mutate(ID = row_number())
我得到如下输出:
ID Time_Stamp A B C
1 02/02/2018 07:45:00 123 567 434
2 02/02/2018 07:45:01
..... ...
5 02/02/2018 07:46:00 123 567 434
5.1 02/02/2018 07:46:01 0 0 0
5.2 02/02/2018 07:46:02 0 0 0
5.3 02/02/2018 07:46:03 0 0 0
5.4 02/02/2018 07:46:04 0 0 0
5.5 02/02/2018 07:46:05 0 0 0
5.6 02/02/2018 07:46:06 0 0 0
5.7 02/02/2018 07:46:07 0 0 0
5.8 02/02/2018 07:46:08 0 0 0
5.9 02/02/2018 07:46:09 0 0 0
6 02/02/2018 07:46:10 112 2323 2323
6.1 02/02/2018 07:46:11 0 0 0
我希望将上一行替换为 0 值。
提前致谢
【问题讨论】:
-
不清楚。你能展示一下你的预期输出吗?
-
@RonakShah,嗨,我想要前一行数据值,即
Row number 5 for all the missing values between 5 and 6,和row number 6 for value missing between 6 and 7。就像对于缺失值保持前一个值相同,即所有的 i = i-1` 值缺少行数据。 -
@RonakShah。我的意思是
0值应该替换为第 5 行值。 -
你需要
df %>% complete(Time_Stamp = seq(min(Time_Stamp), max(Time_Stamp), by = "sec")) %>% fill(A, B, C)吗? -
嗯..不确定。试试这个
df %>% complete(Time_Stamp = seq(min(Time_Stamp), max(Time_Stamp), by = "sec")) %>% fill(everything())
标签: r time-series