我有一个数据集,我观察一些人的变量,而对其他人不观察。对于那些我观察到变量的个体,我只观察一次。但是,每个个体的观察次数以及观察值的位置都会发生变化。
我想使用非NA值来填充给定个体的所有NA值,如果有非NA值的话。否则,NA应该保持为NA。
以下是一个示例数据集:
这个方法完美地解决了问题。不过,我需要对大约80mio.的观测数据执行此操作,这需要数小时的时间。有更快的方法吗?我认为
如果可以仅填充出现在值之前的NAs,那将非常好。
谢谢!
我想使用非NA值来填充给定个体的所有NA值,如果有非NA值的话。否则,NA应该保持为NA。
以下是一个示例数据集:
#data.frame of 100 individuals with 10 observations each
data <- data.frame(group = rep(1:100,each=10),value = NA)
#first 50 individuals get a value at the fifth observation, others don't have value
data$value[seq(5,500,10)] <- rnorm(50)
目前为止还好,没有大问题。从另一个线程中提取,我们可以使用 dplyr
和 tidyr
来做类似以下的事情:
data <- data %>%
group_by(group) %>% #by group
fill(value) %>% #default direction down
fill(value, .direction = "up") #also fill NAs upwards
这个方法完美地解决了问题。不过,我需要对大约80mio.的观测数据执行此操作,这需要数小时的时间。有更快的方法吗?我认为
data.table
可能是一个不错的选择。如果可以仅填充出现在值之前的NAs,那将非常好。
谢谢!