我想计算2个日期之间的差异,并在结果列中添加+ 1。我有一个大数据集。我该怎么执行呢?
library(dplyr)
diff <- df %>% mutate(diff = as.character(as.Date(date1, format = "%m/%d/%Y") - as.Date(date2, format = "%m/%d/%Y")))
已经从日期2开始减去日期1,并希望在此列中添加+ 1
答案 0 :(得分:1)
不确定您的初始日期是什么样的,但是您可以使用lubridate
包获得更清晰的代码,如Kevin提到的那样:
library(tidyverse)
library(lubridate)
diff<- df %>%
mutate(diff_plus_one = as.character(ymd(date1) - ymd(date2) + 1)
如果日期采用"%m/%d/%Y"
格式,请使用mdy
代替ymd
,或者如果他们已经date
个对象,则不要使用以前的任何事情。
答案 1 :(得分:0)
你可以这样做:
library(dplyr)
diff<- df %>% mutate(diff = difftime(as.Date(date1,format = "%m/%d/%Y"),
as.Date(date2,format = "%m/%d/%Y")),
new_col = as.integer(diff + 1))
注意:
difftime
获取两个日期之间的时差,并返回difftime
个对象diff
中添加一天,您只需添加一个并将整个事物转换为整数。difftime
的好处是你可以有不同的时间单位。所以diff
实际上可以在&#34;周&#34;或&#34;月&#34; mutate
可让您使用刚刚在同一mutate
电话中创建的变量,因此mutate
无需第二个new_col=
示例:
> difftime(as.Date("2017-05-30"),as.Date("2017-05-28"))
Time difference of 2 days
> difftime(as.Date("2018-05-30"),as.Date("2017-05-28"), units = "weeks")
Time difference of 52.42857 weeks
> difftime(as.Date("2018-05-30"),as.Date("2017-05-28"), units = "weeks") %>% as.integer
[1] 52