R的天数差异基于列值

问题描述

我正尝试根据另一列的值计算单列中日期的差异。

这是我要寻找的结果

enter image description here

解决方法

尝试一下

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))
,

这是使用dplyrlubridate的一种方法(需要使日期相减时才起作用)。看来您想让计算确定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))