【发布时间】:2021-12-14 14:14:51
【问题描述】:
我正在使用以下数据集
dt <- data.table(RequestTime = c("2011-01-01 07:00:42","2011-01-02 05:00:47","2011-01-03 07:05:02","2011-01-04 04:00:42","2011-01-05 02:00:11"), ExportTime = c("2011-01-01 07:00:50","2011-01-05 05:00:52","2011-01-01 07:06:33","2011-03-04 04:00:51","2011-01-06 02:00:22"))
由于我正在处理日期,因此使用以下方法将两列都转换为正确的格式:
dt$RequestTime <- as.POSIXct(dt$RequestTime)
dt$ExportTime <- as.POSIXct(dt$ExportTime)
我正在尝试使用 ifelse 条件语句来根据条件更新 ExportTime 的值,如果开始日期和 RequestTime 之间的差异小于 86400 秒(24 小时),那么我保持 ExportTime 相同,但如果差异大于 86400 秒,则适用第二个条件。这是我的做法。
x <- dt$RequestTime
y <- dt$ExportTime
start_date <- as.Date("2011-01-01")
dt$ExportTime <- fifelse((difftime(start_date, x, units = "secs") < 86400), y,
y - (difftime(start_date, x, units = "secs")))
因此,在这种情况下,5 个观察值中只有 1 个应该保持不变。但是当我运行它时,我看到所有的观察结果都保持不变。任何帮助将不胜感激)
【问题讨论】:
标签: r if-statement conditional-statements