R 小组在多个栏上进行的最后一次观察

R 小组在多个栏上进行的最后一次观察,r,data.table,locf,R,Data.table,Locf,我有一个数据集,记录了多个患者的观察结果和他们的诊断结果。有9个不同的虚拟变量,每个代表一个特定的诊断,例如L40、L41、K50、M05等 如果虚拟变量中有缺失值,我想按患者结转最后一个非缺失值,这样一旦患者收到诊断,它将继续进行后续观察 我从这个开始,使用zoo包中的na.locf函数 diagdata <- originaldata[,grep("^patient|^ar|^edatum|^K|^L|^M",colnames(originaldata))] require(zoo)

我有一个数据集,记录了多个患者的观察结果和他们的诊断结果。有9个不同的虚拟变量,每个代表一个特定的诊断,例如L40、L41、K50、M05等

如果虚拟变量中有缺失值,我想按患者结转最后一个非缺失值,这样一旦患者收到诊断,它将继续进行后续观察

我从这个开始,使用zoo包中的na.locf函数

diagdata <- originaldata[,grep("^patient|^ar|^edatum|^K|^L|^M",colnames(originaldata))]

require(zoo)
require(data.table)

diagnosis <- data.table(diagdata)

diagnosis[,L40:=na.locf(L40),by=patient]
诊断数据
另请看一看。

使用
setDT
as.data.table
而不是
data.table()
data.frame
就地转换或分别作为副本。是否存在仅使用data.table函数实现的na.locf替代方案?roll=t,Inf,-Inf应该执行以下操作:same@MM滚动连接中的locf,在连接期间发生。可以将其转换为连接问题,但这不是R的有效使用。
cols = grep("^K|^L|^M", names(diagnosis), value = T)

diagnosis[, (cols) := na.locf(.SD, na.rm = F), by = patient, .SDcols = cols]