我是 R 新手,但已经转向它来解决我正在尝试处理的大型数据集的问题。目前,我有 4 列数据(Y 值)针对分钟间隔时间戳(月/日/年小时:分钟)(X 值)设置,如下所示:
timestamp tr tt sr st
1 9/1/01 0:00 1.018269e+02 -312.8622 -1959.393 4959.828
2 9/1/01 0:01 1.023567e+02 -313.0002 -1957.755 4958.935
3 9/1/01 0:02 1.018857e+02 -313.9406 -1956.799 4959.938
4 9/1/01 0:03 1.025463e+02 -310.9261 -1957.347 4961.095
5 9/1/01 0:04 1.010228e+02 -311.5469 -1957.786 4959.078
我遇到的问题是缺少一些时间戳值 - 例如9/1/01 0:13 和 9/1/01 0:27 之间可能存在间隙,并且这种间隙在整个数据集中是不规则的。我需要将其中几个系列放入同一个数据库中,并且由于每个系列的缺失值都不同,因此日期当前在每行上并不对齐。
我想为这些缺失的时间戳生成行,并用空白值填充 Y 列(没有数据,不是零),以便我有一个连续的时间序列。
老实说,我不太确定从哪里开始(之前没有真正使用过 R,所以我一边学习一边学习!),但任何帮助将不胜感激。到目前为止,我已经安装了 chron 和 Zoo,因为它们似乎很有用。
Thanks!
这是一个老问题,但我只是想发布一个 dplyr 处理这个问题的方法,因为我在寻找类似问题的答案时遇到了这篇文章。我发现它比动物园的方法更直观、更直观。
library(dplyr)
ts <- seq.POSIXt(as.POSIXct("2001-09-01 0:00",'%m/%d/%y %H:%M'), as.POSIXct("2001-09-01 0:07",'%m/%d/%y %H:%M'), by="min")
ts <- seq.POSIXt(as.POSIXlt("2001-09-01 0:00"), as.POSIXlt("2001-09-01 0:07"), by="min")
ts <- format.POSIXct(ts,'%m/%d/%y %H:%M')
df <- data.frame(timestamp=ts)
data_with_missing_times <- full_join(df,original_data)
timestamp tr tt sr st
1 09/01/01 00:00 15 15 78 42
2 09/01/01 00:01 20 64 98 87
3 09/01/01 00:02 31 84 23 35
4 09/01/01 00:03 21 63 54 20
5 09/01/01 00:04 15 23 36 15
6 09/01/01 00:05 NA NA NA NA
7 09/01/01 00:06 NA NA NA NA
8 09/01/01 00:07 NA NA NA NA
同样使用 dplyr,这使得执行诸如将所有这些缺失值更改为其他值之类的操作变得更加容易,这在我在 ggplot 中进行绘图时非常方便。
data_with_missing_times %>% group_by(timestamp) %>% mutate_each(funs(ifelse(is.na(.),0,.)))
timestamp tr tt sr st
1 09/01/01 00:00 15 15 78 42
2 09/01/01 00:01 20 64 98 87
3 09/01/01 00:02 31 84 23 35
4 09/01/01 00:03 21 63 54 20
5 09/01/01 00:04 15 23 36 15
6 09/01/01 00:05 0 0 0 0
7 09/01/01 00:06 0 0 0 0
8 09/01/01 00:07 0 0 0 0
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)