问题描述
我正尝试根据另一列的值计算单列中日期的差异。
这是我要寻找的结果
解决方法
尝试一下
library('dplyr')
df <- data.frame(id = c(1,2,3,1,3),Date = c('1/1/2020','1/3/2020','1/1/2020','1/7/2020','1/6/2020','1/5/2020'))
df %>% mutate(Date = as.Date(Date,format='%m/%d/%Y')) %>%
group_by(id) %>%
mutate(DIFF = Date - lag(Date))
,
这是使用dplyr
和lubridate
的一种方法(需要使日期相减时才起作用)。看来您想让计算确定ID中的组之间的日期与该ID的最早日期之间的天数。
library(dplyr)
library(lubridate)
df %>%
mutate(Date = dmy(Date)) %>%
group_by(ID) %>%
mutate(Diff = Date - min(Date))
如果您希望使用NA
而不是0,则可以执行以下操作:
df %>%
mutate(Date = dmy(Date)) %>%
group_by(ID) %>%
mutate(Diff = if_else(Date == min(Date),NA_integer_,Date - min(Date))