【问题标题】:Disambiguating day of the week in R在R中消除星期几的歧义
【发布时间】:2012-05-31 11:24:33
【问题描述】:

我有确定的开始时间和指定的一周中的哪一天。

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

我想要的是在 start 之后找到与一周中相应日期匹配的第一天。 (希望对于用户如何输入星期几目标有点灵活)有什么想法吗?我想字符串查找表可能会起作用,但必须有一种更简洁的方法。

如果解决方案可以矢量化,则加分......

【问题讨论】:

    标签: r date


    【解决方案1】:

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

    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"
    

    【讨论】:

    • 太棒了!我认为首先将目标截断为 min(nchar(target)) 的变体将矢量化。
    猜你喜欢
    • 2020-02-23
    • 2016-11-27
    • 1970-01-01
    • 1970-01-01
    • 2012-09-28
    • 1970-01-01
    • 2018-09-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多