在R中消除星期几

时间:2012-05-31 11:24:33

标签: r date

我有一定的开始时间和一周的指定日期。

start = as.POSIXct(1234567, origin = "1970-1-1")
format(start, format = "%A %c")
target1 = "TUE"
target2 = "Wednesday"

我想要的是找到开始后的第一天,它与一周中的相应日期相匹配。 (并且希望用户如何输入星期几的目标有点灵活)任何想法?我想一个字符串查找表可能会起作用,但是必须有一个更简洁的方法。

如果解决方案可以进行矢量化,则获得积分......

1 个答案:

答案 0 :(得分:2)

我还没有尝试过对此进行矢量化(不确定是否可以),但这是一次尝试:

find_day <- function(start,target){
    target <- tolower(target)
    next_week <- as.Date(start) + 1:7
    next_week[match(target,substr(tolower(weekdays(next_week)),1,nchar(target)))]
}

它应该接受一天的任何长度或大写缩写。如何使用它:

> find_day(start,"TUE")
[1] "1970-01-20"
> find_day(start,"friday")
[1] "1970-01-16"