【发布时间】:2021-12-31 20:30:12
【问题描述】:
我需要找到一种快速的方法来有条件地找出数据表中两个日期之间的差异(以天为单位)。我设法用“ifelse”语句来做到这一点,但在大对象上速度很慢,所以我的问题是,是否有更快、更优雅的方式来实现同样的效果,也许使用 data.table 命令,如“:=”或其他东西。谢谢。 J.
library(lubridate)
library(data.table)
rm(list = ls())
a <- as.Date(c ("2021-09-27", "2019-10-30", "2021-09-05"))
b <- as.Date(c ("2020-06-14", "2019-09-15", "2020-09-23"))
c <- as.Date(c ("2022-07-12", "2020-09-23", "2021-06-19"))
new <- data.table(leave = a, start = b, end = c)
new$days <- ifelse (
new$leave < new$end,
new$leave - new$start,
new$end - new$start)
也就是说,当离开日期 =结束,然后从结束减去开始,并以天为单位在新列中返回结果。
【问题讨论】:
-
试试
data.table::fiflese()。获取一些信息here -
这样做会更快吗?
new[, days := pmin(leave, end) - start]
标签: r data.table lubridate