Обновите новый столбец даты, используя существующий столбец даты с -1 дня - PullRequest
1 голос
/ 20 марта 2020

У меня есть набор идентификаторов пациентов и столбец даты. Я хочу обновить столбец date1 с -1 дня от столбца даты. например:

ID   Date         Date1
1   23-10-2017   23-09-2018
1   24-09-2018   28-08-2019
1   29-08-2019       -
2   30-05-2016   11-06-2017
2   12-06-2017   12-07-2018
2   13-07-2018       -

Ответы [ 3 ]

0 голосов
/ 20 марта 2020

Сдвиг на одну строку по группе, затем вычесть один день:

library(data.table)

dt1 <- fread("
ID   Date     
1   23-10-2017
1   24-09-2018
1   29-08-2019
2   30-05-2016
2   12-06-2017
2   13-07-2018")

# convert to date
dt1[, Date := as.Date(Date, "%d-%m-%y")]

# shift per group, then minus 1 day
dt1[, Date1 := shift(Date, - 1) - 1, by = ID]

dt1
#    ID       Date      Date1
# 1:  1 2020-10-23 2020-09-23
# 2:  1 2020-09-24 2020-08-28
# 3:  1 2020-08-29       <NA>
# 4:  2 2020-05-30 2020-06-11
# 5:  2 2020-06-12 2020-07-12
# 6:  2 2020-07-13       <NA>
0 голосов
/ 20 марта 2020

Попробуйте использовать свинец:

library(dplyr)

df %>%
  group_by(ID) %>%
  mutate(Date1 = lead(Date)-1)

# A tibble: 6 x 3
# Groups:   ID [2]
     ID Date       Date1     
  <int> <date>     <date>    
1     1 2017-10-23 2018-09-23
2     1 2018-09-24 2019-08-28
3     1 2019-08-29 NA        
4     2 2016-05-30 2017-06-11
5     2 2017-06-12 2018-07-12
6     2 2018-07-13 NA 
0 голосов
/ 20 марта 2020

Я не знаю, получу ли я то, что вы хотите. Но если вы просто хотите дату меньше одного дня, это код.

x <- data.frame(ID = c(1,1,1,2,2,2), Date = as.Date(c("20-10-2017", "24-09-2018", "29-08-2019", "30-05-2016", "12-06-2017", "13-07-2018"),"%d-%m-%Y"))

x$Date1 <- x$Date-1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...