The data.table выглядит следующим образомКак получить разницу дат внутри data.table
AccId Balance BusinessDate flag_change
(fctr) (dbl) (fctr) (dbl)
1 00000252-MMM-140 23550.85 2012-04-30 1
2 00000252-MMM-140 23567.20 2012-05-31 1
3 00000252-MMM-140 23579.49 2012-06-30 1
4 00000252-MMM-140 23591.20 2012-07-31 1
5 00000252-MMM-140 23603.89 2012-08-31 1
6 00000252-MMM-140 23629.67 2012-09-30 1
7 00000252-MMM-140 23642.15 2012-10-31 1
8 00000252-MMM-140 23642.15 2012-11-30 0
9 00000252-MMM-140 23652.26 2012-12-31 1
10 00000252-MMM-140 23652.26 2013-01-01 0
Теперь я хочу, чтобы вычислить дату, когда баланс был изменен для счетов. Я в идеале нуждаюсь в столбце, состоящем из разницы дат каждого BusinessDate
для изменения остатка на accID
, и если он не изменился в следующем BusinessDate
, как показано ниже, он будет равен 0, и он перейдет на следующую дату и рассчитает разницу , В приведенном ниже примере я хотел бы иметь
1 00000252-MMM-140 23550.85 2012-04-30 1 1
2 00000252-MMM-140 23567.20 2012-05-31 1 31
3 00000252-MMM-140 23579.49 2012-06-30 1 30
4 00000252-MMM-140 23591.20 2012-07-31 1 31
5 00000252-MMM-140 23603.89 2012-08-31 1 31
6 00000252-MMM-140 23629.67 2012-09-30 1 30
7 00000252-MMM-140 23642.15 2012-10-31 1 31
8 00000252-MMM-140 23642.15 2012-11-30 0 0
9 00000252-MMM-140 23652.26 2012-12-31 1 61
Однако я не могу понять, как этого добиться.
Добавив 'by =" AccId "', вы можете сделать это для каждого отдельного значения 'AccId'. (В противном случае будут проблемы с перекрытием при изменении 'AccId'.) –
Я имею в виду' df1 [flag_change! = 0, Diff: = c (1, diff (BusinessDate)), by = "AccId"] ' –
@K .Rohde Спасибо за комментарий. Да, это должно быть так. – akrun