我有一个数据集,随着时间的推移观察多个患者及其诊断.有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开头的列?
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.
| 归档时间: |
|
| 查看次数: |
1477 次 |
| 最近记录: |