你可以这样做:
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
实际上是“周”或“月”
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
你想要在同一列吗?如果是这样,请与您现有的mutate语句内联。如果添加列,只需添加一个随后的'mutate(new_col = diff + days(1))'......假设您使用'lubridate'并且您正在寻求增加一天。 –
你意识到'+ 1'的作品,对吧? 'date1 < - “07/31/1982”; date2 < - “08/01/1982”; as.Date(date1,format =“%m /%d /%Y”) - as.Date(date2,format =“%m /%d /%Y”)+ 1'。要添加+1,只需输入“+ 1”。 –
我做了这个评论,让OP考虑他们打算增加的内容,因为它在问题中不清楚。详细是不是一个错误。 –