2016-09-12 6 views
0

異なるデータフレームの2つの列を整列させるソリューションを見つけるのは難しいです。これらの2つのデータフレームを結合して両方のデータフレームの観測時間を同じにしようとしています。私はここで提供された多くのソリューションを試しました、特に動物園とxtsからマージしますが、それらのほとんどは私のケースでは使用できません。いくつかのダミーコード。異なるデータフレームの異なるdatetimeを整列する

df2<-structure(list(datetime = structure(1:10, .Label = c("2004-01-03 03:00:00", 
"2004-01-03 12:00:00", "2004-01-03 15:00:00", "2004-01-03 21:00:00", 
"2004-01-04 03:00:00", "2004-01-04 12:00:00", "2004-01-04 15:00:00", 
"2004-01-04 21:00:00", "2004-01-05 03:00:00", "2004-01-05 12:00:00" 
), class = "factor"), value = c(-1.7, -2.2, -2.5, -3.9, -5.5, 
-5.6, -6, -6.7, -7.8, -7.6)), .Names = c("datetime", "value"), class = "data.frame", row.names = c(NA, 
-10L)) 

DF2

df1<- structure(list(datetime = structure(c(1073098800, 1073131200, 
    1073142000, 1073163600, 1073703600, 1073736000, 1073746800, 1073768400, 
    1073790000, 1073822400), class = c("POSIXct", "POSIXt"), tzone = "UTC"), 
     value = c(NA, NA, NA, -12.7, -12.9, -7.9, -6.2, -14, -11.7, 
     NA)), .Names = c("datetime", "value"), row.names = c(NA, 
    10L), class = "data.frame") 

DF1そして、私はこのような何かを取得したい:事前に

datetime value datetime value 
2004-01-03 03:00:00 NA  2004-01-03 03:00:00 -1.7 
2004-01-03 12:00:00 NA  2004-01-03 12:00:00 -2.2 
2004-01-03 15:00:00 NA  2004-01-03 15:00:00 -2.5 
2004-01-03 21:00:00 -12.7 2004-01-03 21:00:00 -3.9 
2004-01-10 03:00:00 -12.9 2004-01-04 03:00:00 -5.5 
2004-01-10 12:00:00 -7.9 2004-01-04 12:00:00 -5.6 
2004-01-10 15:00:00 -6.2 2004-01-04 15:00:00 -6 
2004-01-10 21:00:00 -14  2004-01-04 21:00:00 -6.7 
2004-01-11 03:00:00 -11.7 2004-01-05 03:00:00 -7.8 
2004-01-11 12:00:00 NA  2004-01-05 12:00:00 -7.6 

感謝。

EDIT:

私は、元のデータフレームが異なる件数のレコードを持っていることを言及するのを忘れてしまいました。これは、これらのデータをマージする際の主な問題です。

後でEDIT。 plyrからの参加がそのトリックを行うことがわかりました。

答えて

0

動物園に変換し、同時にそれらがPOSIXctであることを確認してからマージします。必要に応じてdata.frameに戻します。

library(zoo) 

z1 <- read.zoo(df1) 
z2 <- read.zoo(df2, tz = "") 

z <- merge(z1, z2) 

fortify.zoo(z) 
+0

ありがとうございます、それは魅力的です。 – julics

関連する問題