【发布时间】:2020-02-11 16:21:17
【问题描述】:
我正在阅读 R 中的一个 excel 文件并计算该日期前 6 个月的日期。如果日期是周末,则需要将日期更改为下一个工作日。
例如:如果日期是 2020 年 2 月 7 日,则前六个月是 2019 年 8 月 11 日。这是星期天。 如何将日期更改为 2019-08-12?
我尝试了以下代码:
date <- as.date.character("2020-2-7")
nxtd <- date-180
if(weekdays(nxtd)=="Saturday"){nxtd <- date-182} else if(weekdays(nxtd)=="Sunday"){nxtd <- date-181}
else{nxtd <- date-180}
此代码给出错误/警告“条件长度 > 1 并且仅使用第一个元素”
我该如何解决?
【问题讨论】:
-
如果你想检查一个值是否在一个向量中,你可以使用
%in%。==检查两件事是否相等。 R 中的if / else结构未矢量化,这就是您收到警告(而不是错误)的原因 - 只会根据第一个值检查条件。使用矢量化的ifelse。在这种情况下,这并不重要,因为您的示例只有 1 个值,但我想您的真实数据有更多。您还缺少 2 个右引号。 -
我的真实数据大概有50行数据。
-
这就是我的想法,这就是为什么你要切换到
ifelse。该警告已讨论here。另外,您假设 6 个月正好是 180 天——这真的是您想要的吗? -
@camille,谢谢,是的,我需要坚持 180 天。
标签: r date if-statement