2016-09-12 2 views
0

Я пытаюсь найти решение для выравнивания двух столбцов из разных фреймов данных. Я пытаюсь объединить эти два кадра данных, чтобы получить одинаковое время наблюдения для обоих кадров данных. Я пробовал множество решений, предоставляемых здесь, особенно для слияния с зоопарком и xts, но большинство из них не могут быть использованы в моем случае. Какой-то фиктивный код.Выровнять различные даты и время из разных фреймов данных

df1

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") 

df2

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

И я хочу, чтобы получить что-то вроде этого:

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:

Я забыл упомянуть о том, что исходные кадры данных имеют разное количество записей. Это основная проблема слияния этих данных.

Позже ИЗМЕНИТЬ. Я нашел, что соединение с 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

Смежные вопросы