Разница между рядами несовместима

Я хочу рассчитать разницу в днях между двумя строками (для каждого идентификатора) с помощью 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)]
Другие вопросы по тегам