mydates中的星期日为2018-05-06。我希望添加1天,以便2018-05-06变为2018-05-07(星期一)。也就是说,如果日期是星期天,则添加一天。
library(dplyr)
library(lubridate)
mydates <- as.Date(c('2018-05-01','2018-05-02','2018-05-05','2018-05-06'))
# find which are weekend dates
x = as.character(wday(mydates,TRUE))
if(x == 'Sun') { mydates + 1 }
# the Sunday date in mydates is 2018-05-06. I would like 1 day added so
that 2018-05-06 becomes 2018-05-07
这是我的错误:警告消息: 在if(x ==“ Sun”){: 条件的长度> 1,并且只会使用第一个元素
答案 0 :(得分:1)
尝试ifelse
。然后转换为类Date
。
as.Date(ifelse(x == 'Sun', mydates + 1, mydates), origin = '1970-01-01')
#[1] "2018-05-01" "2018-05-02" "2018-05-05" "2018-05-07"
答案 1 :(得分:0)
X是一个向量,因此您可以使用if_else
语句来增加星期日,如下所示:
library(dplyr)
library(lubridate)
new_dates <- if_else(x == 'Sun', mydates + days(1), mydates)
答案 2 :(得分:0)
首先,确定您的哪个日期是星期日。然后,有选择地添加1
library(lubridate)
mydates <- as.Date(c('2018-05-01','2018-05-02','2018-05-05','2018-05-06'))
i <- which(as.character(wday(mydates,TRUE))=="Sun")
mydates[i] <- mydates[i]+1
此输出
"2018-05-01" "2018-05-02" "2018-05-05" "2018-05-07"
我认为这是理想的结果。