Разница между рядами несовместима
Я хочу рассчитать разницу в днях между двумя строками (для каждого идентификатора) с помощью difftime. В начале я получаю правильные результаты, но в некоторых строках есть противоречивые значения:
PatId Date Tage
3l 2015-02-10 NA
3l 2015-03-30 48
3l 2015-06-03 65
...
5r 2016-02-02 NA
5r 2016-03-01 62
5r 2016-03-29 -469
это моя функция:
setDT(AllPat)[, Tage := difftime(AllPat$Date, shift(AllPat$Date), units = "days"), by = PatID]
Я уже пробовал с tz="GMT", но это не меняется, может, у кого-то есть идея?
У кого-нибудь есть идея, как я могу изменить функцию для вычисления разницы и записать ее всегда в первом ряду, чтобы в последнем ряду был только NA
1 ответ
Вы не можете позвонить AllPat$Date
в команде data table и ожидайте, что ваша программа разделит ее по PatID. Ваша программа в настоящее время пытается использовать весь вектор AllPat$Date
за каждый ID. Вам нужно обратиться к переменной Date в таблице данных, чтобы программа могла работать вместе с Date и PatID, если это имеет смысл.
Я бы преобразовал ваш data.frame
к data.table
сначала сохранить как можно больше вашего кода
dtAllPat=as.data.table(AllPat)
dtAllPat[, Tage := difftime(Date, shift(Date), units = "days"), keyby = .(PatID)]