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

udd*_*903 3 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]
Run Code Online (Sandbox Code Playgroud)

这实现了我所期待的,但仅限于所讨论的列(L40).有没有办法将上述内容应用于所有相关的诊断栏,即以K,L和M开头的列?

edd*_*ddi 6

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

diagnosis[, (cols) := na.locf(.SD, na.rm = F), by = patient, .SDcols = cols]
Run Code Online (Sandbox Code Playgroud)

另外,请在单个R data.table中按组查看有效的locf.