【发布时间】:2014-05-22 23:06:23
【问题描述】:
我每天观察到很多缺失值,并试图通过每个个体的向量传播第一个非缺失值。
在我目前所做的搜索中,我在zoo 包中发现了na.locf 函数;但是,我现在需要根据我的数据框中的 id 变量来调节这个函数。 ddply 是正确的功能吗?如果是这样,有人可以帮我弄清楚如何将输出包含在同一数据框中名为result 的新变量中吗?
这是我目前所拥有的:
# Load required libraries
library(zoo)
library(plyr)
# Create the data
data <- structure(list(id = c(1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2,
2, 2, 2), day = c(0, 1, 2, 3, 4, 5, 6, 0, 1, 2, 3, 4, 5, 6, 7,
8), value = c("NA", "1", "NA", "NA", "NA", "NA", "NA", "NA",
"NA", "NA", "1", "NA", "NA", "NA", "NA", "NA")), .Names = c("id",
"day", "value"), row.names = c(NA, -16L), class = "data.frame")
# Propagate the value of the first non-missing observation in data$value forward for each id
data$result <- na.locf(data$value, na.rm = FALSE)
任何关于如何通过每个id 运行na.locf 函数的想法将不胜感激。谢谢!
【问题讨论】: