我有一个数据集,随着时间的推移观察了多名患者及其诊断。有9个不同的虚拟变量,每个虚拟变量代表一个特定的诊断,例如, L40,L41,K50,M05等。
如果虚拟变量中存在缺失值,我希望患者继续使用最后一个非缺失值,这样一旦患者接受诊断,它将继续进行后续观察。
我开始使用动物园包中的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]
这实现了我所寻找的目标,但仅限于相关专栏(L40)。有没有办法将上述内容应用于所有相关的诊断栏,即以K,L和M开头的列?
答案 0 :(得分:6)
cols = grep("^K|^L|^M", names(diagnosis), value = T)
diagnosis[, (cols) := na.locf(.SD, na.rm = F), by = patient, .SDcols = cols]