r - 根据R中上一行或下一行的值在列中添加缺失值
问题描述
我有一些纵向数据,需要通过一些规则来估算缺失值:
如果缺少一个人的第一个后续数据,则添加下一行的值;
如果缺少一个人的非首行后续数据,则将上一行的值相加;
如果缺少多个连续的后续数据,则添加上一个非缺失行的值。
这是一个例子,
dat<-data.frame(id=c(1,1,1,1,1,1,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3),b6=c(NA,1,1,1,1,1,1,1,1,1,NA,3,NA,NA,5,5,5,5,3,NA,NA))
dat_imputed<-data.frame(id=c(1,1,1,1,1,1,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3),b6=c(1,1,1,1,1,1,1,1,1,1,1,3,3,5,5,5,5,5,3,3,3))
感谢您的任何建议!
解决方案
您可以使用approxfun
在内部添加缺失值ave
进行分组,例如:
dat$b6 <- ave(dat$b6, dat$id, FUN=function(x)
approxfun(x, method = "constant", rule=2)(seq_along(x)))
identical(dat, dat_imputed)
#[1] TRUE
推荐阅读
- php - HTTP 正在运行,但 HTTPS 在带有 LAMP 堆栈的 Nodejs 中不起作用
- azure-cosmosdb - CosmosDb - 仅通过 Id 获取数据时确定最佳 partitionKey
- c# - C# 如何从 appsettings.json 获取值
- sql - 如何在 Toad 中使用 SQL 脚本在桌面上编写 txt 文件
- java - 使用 BufferedReader toString 捕获归档 html,响应打印“\”
- javascript - 如何顺序从两个可观察对象中获取值?
- proxy - 有条件地使用 ProxyConnector 或 HTTPConnector
- algorithm - 使用嵌套循环降低算法的时间复杂度
- python - Python 内联生成器
- excel - 如何突出显示符合条件的特定单元格或过滤特定列表