3

我有一个数据集,其中包含多个患者的观察结果及其随时间的诊断。有 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]

这实现了我正在寻找的东西,但仅限于有问题的列(L40)。有没有办法将上述内容应用于所有相关的诊断列,即以 K、L 和 M 开头的列?

4

1 回答 1

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

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

还可以在单​​个 R data.table 中按组查看有效的 locf 。

于 2016-05-06T20:20:09.460 回答