我有两个包含时间序列数据的 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/