Я хотел бы присвоить разницу во времени последней записи в каждой группе.
Это набор данных моей игрушки (dfx):
vals<- 1:5
grps <- c(1,1,2,2,2)
dts <- as.Date(c("2020-01-01","2020-01-02","2020-01-03","2020-01-04","2020-01-05"))
dfx <- as_tibble(cbind(vals,grps,dts))
colnames(dfx) <- c("vals","grps","dts")
(dfx <- dfx %>% mutate(dts = as.Date(dts)))
dfx - это тиббл 5 x 3:
vals grps dts
<dbl> <dbl> <date>
1 1 1 2020-01-01
2 2 1 2020-01-02
3 3 2 2020-01-03
4 4 2 2020-01-04
5 5 2 2020-01-05
grps
- группирующая переменная; здесь он содержит 2 группы (1,2). Моим желаемым результатом будет расстояние (в днях) от последнего дня каждой группы, и оно должно выглядеть как rslt
(результат моей игрушки):
bfr <-as.tibble(c(1,0,2,1,0))
colnames(bfr) <- "dist"
(rslt <- bind_cols(dfx,bfr))
vals grps dts dist
<dbl> <dbl> <date> <dbl>
1 1 1 2020-01-01 1
2 2 1 2020-01-02 0
3 3 2 2020-01-03 2
4 4 2 2020-01-04 1
5 5 2 2020-01-05 0
Если возможно, я бы хотел использовать dplyr
, lubridate
и tidyr
, чтобы сделать это.