Вычесть предыдущие строки из первой строки по идентификатору в R - PullRequest
0 голосов
/ 26 февраля 2019

Я пытаюсь создать переменную, которая вычитает дату предыдущей строки из даты первой строки по идентификатору, но начинается заново, когда другая переменная равна 1. Вот мой набор данных ниже:

data <- data.frame("ID" = c(1,1,1,1,1,1,1,1,2,2,2,2,2,2), "Date" = c("2018-08-07","2018-08-08","2018-08-09","2018-08-09","2018-08-10","2018-08-11","2018-08-11","2018-08-12","2018-08-04","2018-08-07","2018-08-07","2018-08-08","2018-08-09","2018-08-10"),"DRSG" = c(1,0,0,0,1,0,0,0,1,0,0,1,0,0))

ID     Date          DRSG      
1      2018-08-07    1
1      2018-08-08    0
1      2018-08-09    0
1      2018-08-09    0
1      2018-08-10    1
1      2018-08-11    0
1      2018-08-11    0
1      2018-08-12    0
2      2018-08-04    1
2      2018-08-07    0
2      2018-08-07    0
2      2018-08-08    1
2      2018-08-09    0
2      2018-08-10    0

И яхочу, чтобы это выглядело так:

ID     Date          DRSG    days
1      2018-08-07    1       0
1      2018-08-08    0       1
1      2018-08-09    0       2
1      2018-08-09    0       2
1      2018-08-10    1       0
1      2018-08-11    0       1
1      2018-08-11    0       1
1      2018-08-12    0       2
2      2018-08-04    1       0
2      2018-08-07    0       3
2      2018-08-07    0       3
2      2018-08-08    1       0
2      2018-08-09    0       1
2      2018-08-10    0       2

Любая помощь очень ценится!

1 Ответ

0 голосов
/ 26 февраля 2019

Сначала создайте кумулятивную сумму в исходном столбце DRSG, сгруппированном по ID.Затем мы можем использовать этот новый столбец вместе с исходным ID в качестве нашей группы.Оттуда мы используем dplyr::first, чтобы сделать вычитание.

library(tidyverse)

data %>%
  mutate(Date = as.Date(Date)) %>%
  group_by(ID) %>%
  mutate(increment_DRSG = cumsum(DRSG)) %>%
  group_by(ID, increment_DRSG) %>%
  mutate(days = Date - first(Date))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...