2016-04-04 20 views
0

Iが複数の幾分不規則な時間系列(CSVファイルの各)を有するので、等:ExcelまたはR:欠損値の時系列をマージ

X.csv

date,time,value 
01/01/04,00:15:00,4.98 
01/01/04,00:25:00,4.981 
01/01/04,00:35:00,4.983 
01/01/04,00:55:00,4.986 

など:

Y.csv

date,time,value 
01/01/04,00:05:00,9.023 
01/01/04,00:15:00,9.022 
01/01/04,00:35:00,9.02 
01/01/04,00:45:00,9.02 
01/01/04,00:55:00,9.019 

が両方のファイルで10分の粒度は基本的にですが、それぞれがいくつかのミスを持っているかに注意してください歌のエントリ。

私は今、これらの2つの時系列は、以下を達成マージしたい:

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 

はこれを達成するための簡単な方法はありますか?私は複数のファイル(2つだけではない)を持っているので、ファイルのバッチに対してこれを行う方法はありますか?

答えて

1

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

は私たちに

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 

今XTS-オブジェクトにX、Yを変換して2つのオブジェクトをマージすべてのデータポイントを取得するouter join

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 <- result[,3] 

とあなたが得る:あなたはもう、X、Yの列を必要としない場合

result$bothXY <- rowSums(result,na.rm=T) 

> 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 
-4

これを行うにはdplyrを使用できます。まずグループXとグループYのすべてのファイルをdoループを使って読み込みます。その結果、それぞれのファイルが1つだけになります。その後、結果をfull_joinします。あなたのデータを取得

+2

答えを広げてください。省略。 – zx8754

関連する問題