Рассчитайте разницу в датах в г - PullRequest
1 голос
/ 04 февраля 2020

У меня есть фрейм данных, в котором есть 3 столбца Alertdate, AppointmentDate и ID. Идентификатор не является уникальным и там несколько случаев для предупреждения и встречи. Я хочу вычислить разницу в Alertdate и AppointmentDate, но только для первого вхождения ID. Пример

ID  Alertdate  AppointmentDate  NBD

*1   01/01/2000    04/01/2000        3*

1   02/01/2000    04/01/2000        2

*2   01/01/2000    04/01/2000        3*

2   01/01/2000    05/01/2000        4

Для приведенных выше примеров данных мне просто нужны строки1 и строка3 в полученном результате.

1 Ответ

3 голосов
/ 04 февраля 2020

Если вам нужно сначала рассчитать NBD

dat=read.table(text="
ID Alertdate AppointmentDate NBD
1 01/01/2000 04/01/2000 3
1 02/01/2000 04/01/2000 2
2 01/01/2000 04/01/2000 3
2 01/01/2000 05/01/2000 4",h=T)

dat$Alertdate=as.Date(dat$Alertdate,format="%d/%m/%Y")
dat$AppointmentDate=as.Date(dat$AppointmentDate,format="%d/%m/%Y")
dat$NBD=as.numeric(dat$AppointmentDate-dat$Alertdate)

Если таблица не отсортирована

dat=dat[order(dat$ID,dat$Alertdate),]

наконец

do.call(rbind,by(dat,list(dat$ID),function(x){x[1,]}))
  ID  Alertdate AppointmentDate NBD
1  1 01/01/2000      04/01/2000   3
2  2 01/01/2000      04/01/2000   3
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...