我会单独处理你的数据帧的每一列。对于每一列,删除该列和时间索引中缺失的观测值,然后构建
zoo
对象然后你可以使用
do.call
打电话
merge
在您的列表中
动物园
物体。
# helper function to build zoo objects with no missing values
f <- function(v, i) {
na <- is.na(v)
iposix <- as.POSIXct(i, origin="1970-01-01", tz="UTC")
zoo(v[!na], iposix[!na])
}
df <- structure(list(time = c(1352639505L, 1352639565L, 1352639505L,
1352639565L), v1 = c(NA, NA, 10L, 11L), v1 = c(NA, NA, 222L,
221L), v3 = c(94L, 94L, NA, NA), v4 = c(101L, 101L, NA, NA)), .Names = c("time",
"v1", "v1", "v3", "v4"), class = "data.frame", row.names = c(NA, -4L))
library(zoo)
Data <- do.call(merge, lapply(df[-1], f, i=df$time))
Data
# v1 v1.1 v3 v4
# 2012-11-11 07:11:45 10 222 94 101
# 2012-11-11 07:12:45 11 221 94 101