Excel或R:合并缺少值的时间序列

Excel或R:合并缺少值的时间序列,r,excel,csv,merge,time-series,R,Excel,Csv,Merge,Time Series,我有多个不规则的时间序列(每个都在CSV文件中),如下所示: X.csv 因此: Y.csv 请注意,这两个文件的粒度基本上都是10分钟,但每个文件都缺少一些条目 我现在想合并这两个时间序列,以实现以下目标: date,time,X,Y 01/01/04,00:05:00,NA,9.023 01/01/04,00:15:00,4.98,9.022 01/01/04,00:25:00,4.981,NA 01/01/04,00:35:00,4.983,9.02 01/01/04,00:45:00,N

我有多个不规则的时间序列(每个都在CSV文件中),如下所示:

X.csv

因此:

Y.csv

请注意,这两个文件的粒度基本上都是10分钟,但每个文件都缺少一些条目

我现在想合并这两个时间序列,以实现以下目标:

date,time,X,Y
01/01/04,00:05:00,NA,9.023
01/01/04,00:15:00,4.98,9.022
01/01/04,00:25:00,4.981,NA
01/01/04,00:35:00,4.983,9.02
01/01/04,00:45:00,NA,9.02
01/01/04,00:55:00,4.986,9.019

有没有一个简单的方法来实现这一点?由于我有多个文件(而不仅仅是两个),有没有办法对一批文件执行此操作?

您可以使用dplyr来执行此操作。首先使用do循环读入组X和组Y中的所有文件,这样每个文件就只有一个文件。然后完全加入结果。

获取数据:

X <- read.table(pipe("pbpaste"), sep=",", header=T)
X$date <- as.POSIXct(paste(as.Date(X$date, format='%m/%d/%y'),X$time))
与Y相同:

> Y
                 date     time value
1 2004-01-01 00:05:00 00:05:00 9.023
2 2004-01-01 00:15:00 00:15:00 9.022
3 2004-01-01 00:35:00 00:35:00 9.020
4 2004-01-01 00:45:00 00:45:00 9.020
5 2004-01-01 00:55:00 00:55:00 9.019
现在,将X、Y转换为xts对象,并使用
外部联接将这两个对象合并,以获得所有数据点

result <- merge(as.xts(X[,3],order.by = X$date),as.xts(Y[,3],order.by = Y$date),join='outer’)

names(result) <- c('x','y')

请扩大你的答案,目前这看起来更像是一个评论。
> X
                 date     time value
1 2004-01-01 00:15:00 00:15:00 4.980
2 2004-01-01 00:25:00 00:25:00 4.981
3 2004-01-01 00:35:00 00:35:00 4.983
4 2004-01-01 00:55:00 00:55:00 4.986
> Y
                 date     time value
1 2004-01-01 00:05:00 00:05:00 9.023
2 2004-01-01 00:15:00 00:15:00 9.022
3 2004-01-01 00:35:00 00:35:00 9.020
4 2004-01-01 00:45:00 00:45:00 9.020
5 2004-01-01 00:55:00 00:55:00 9.019
result <- merge(as.xts(X[,3],order.by = X$date),as.xts(Y[,3],order.by = Y$date),join='outer’)

names(result) <- c('x','y')
result$bothXY <- rowSums(result,na.rm=T)
result <- result[,3]
> result
                    bothXY
2004-01-01 00:05:00  9.023
2004-01-01 00:15:00 14.002
2004-01-01 00:25:00  4.981
2004-01-01 00:35:00 14.003
2004-01-01 00:45:00  9.020
2004-01-01 00:55:00 14.005