У меня есть набор данных с наблюдениями за несколькими пациентами и их диагнозами с течением времени. Существует 9 различных фиктивных переменных, каждая из которых представляет конкретный диагноз, например, с именем L40, L41, K50, M05 и так далее.
Если в фиктивных переменных есть пропущенные значения, я хочу перенести последнее не пропущенное значение по пациенту, чтобы после того, как пациент получил диагноз, он перешел к последующим наблюдениям.
Я начал с этого, используя функцию na.locf из пакета zoo.
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?
setDT
илиas.data.table
вместоdata.table()
для преобразования изdata.frame
на месте или в качестве копии соответственно - person eddi   schedule 06.05.2016