最后一次观察由小组在多个栏目上进行

时间:2016-05-06 20:06:41

标签: r data.table locf

我有一个数据集,随着时间的推移观察了多名患者及其诊断。有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开头的列?

1 个答案:

答案 0 :(得分:6)

cols = grep("^K|^L|^M", names(diagnosis), value = T)

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

另请查看efficiently locf by groups in a single R data.table