r - 合并两个不同时间粒度的时间序列

标签 r merge time-series zoo

我有两个包含时间序列数据的 CSV 文件。我想将这两个合并到一个文件中。 File1 具有以 1 分钟为间隔的周期性数据。 File2 具有非周期性的事件触发数据。 File2 中数据的时间戳可能与 File1 中的数据一致,也可能不一致。我想合并两个数据集以创建一个时间戳是 Data1 和 Data2 的并集的数据集。对于两者不常见的时间戳,我希望将相应数据集的缺失条目指示为 NA。

以下是 File1 的示例输入:

     Time                 A1  A2       
  2013-08-05 00:00:00     2   1               
  2013-08-05 00:01:00     2   1                      
  2013-08-05 00:02:00     1   1                

以下是 File2 的示例输入:

     Time               B1     B2       B3
2013-08-01 12:10:21       5     1          1    
2013-08-05 00:02:00       5     1          1                
2013-08-05 12:13:44      14     1          2   

预期输出如下:

  Time                 A1   A2      B1     B2       B3
2013-08-01 12:10:21    NA    NA     5     1          1    
2013-08-05 00:00:00    2     1      NA    NA         NA  
2013-08-05 00:01:00    2     1      NA    NA         NA        
2013-08-05 00:02:00    1      1     5     1          1 
2013-08-05 12:13:44    NA    NA     14     1          2  

我使用了 merge.zoo 并按照本论坛中其他相关帖子的建议尝试了 merge.xts。但我没有得到预期的输出。这是我使用的代码。

A <- read.zoo(read.csv("File1.csv", header=TRUE));
B <- read.zoo(read.csv("File2.csv", header=TRUE));
C <- merge.zoo(A,B);

如果您能提供任何帮助,我将不胜感激。谢谢。

最佳答案

应替换文件中读取的行,如下所示:

> A <- read.zoo("File1.csv", header = TRUE, tz = "", sep = ",")
> B <- read.zoo("File2.csv", header = TRUE, tz = "", sep = ",")
> merge(A, B)
                    A1 A2 B1 B2 B3
2013-08-01 12:10:21 NA NA  5  1  1
2013-08-05 00:00:00  2  1 NA NA NA
2013-08-05 00:01:00  2  1 NA NA NA
2013-08-05 00:02:00  1  1  5  1  1
2013-08-05 12:13:44 NA NA 14  1  2

这是可复制的形式:

Lines1 <- "   Time,                A1,  A2       
  2013-08-05 00:00:00,    2,  1               
  2013-08-05 00:01:00,    2,  1                      
  2013-08-05 00:02:00,    1,  1  
"

Lines2 <- " Time,              B1,    B2,      B3
2013-08-01 12:10:21,       5,    1,          1    
2013-08-05 00:02:00,      5,    1,          1                
2013-08-05 12:13:44,     14,    1,          2   
"

library(zoo)
A <- read.zoo(text = Lines1, header = TRUE, tz = "", sep = ",")
B <- read.zoo(text = Lines2, header = TRUE, tz = "", sep = ",")
merge(A, B)

关于r - 合并两个不同时间粒度的时间序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18669514/

相关文章:

C:将使用 tmpfile() 函数创建的临时文件与多线程合并

python - 如何在时间序列中的每一天的开始和结束时获取值

python - 如何合并元组或将列表转换为元组?

sql - HH 中的每小时平均聚合 = (HH-1) :41 - HH:40 format in PostgreSQL

r - 使用ts()对象对每周数据进行R时间序列建模

r - 在轴 geom_alluvium 上方添加标题

r - 将 gsub 函数和文本文件配对以进行语料库清理

r - 绘制一个图来表示连续的分类(R,ggplot2)

r - 如何从R社区的角度打造最好的交互式R语言在线学习平台?

sql - 如何在 PostgreSQL 中合并相同的表?