首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将R中的一周(和年份)转换为第一周(即星期一)的日期?

如何将R中的一周(和年份)转换为第一周(即星期一)的日期?
EN

Stack Overflow用户
提问于 2022-01-27 10:17:35
回答 1查看 93关注 0票数 1

在R中,我有一个具有周数和年份的数据集(见下文),我希望将其转换为周中相应的星期一的日期,我使用了as.Date()函数。这很好,除了第一周,其中函数返回NA作为对应的第一周的星期一属于前一年。因此,我希望函数返回星期一的日期,即使它不是同一年。有什么想法吗?

代码语言:javascript
复制
data.frame(week = paste(2022,0:5,sep="-")) %>%
mutate(week2 = paste(week,"1",sep="-"),
        date=as.Date(week2, "%Y-%W-%w"))

week week2日期1 2022-0 2022-0-1 2 2022-1 2022-1-1 2022-01-03 3 2022-2 2022-2-1 2022-01-10 4 2022-3 2022-3-1 2022-01-17 5 2022-4 2022-4 2022-01-24 6 2022-5 2022-5 2022-5 2022-1 2022-01-31

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-01-27 10:51:42

你的代码很好。但是你只有一个问题:如果== 0周的话,那就是NA。如果周数是零,那么一年的第一天不是星期一。因此,您可以检查周号是否为零(并在前一年中找到星期一),或者像在示例中所做的那样。例如,as.Date("2018-1-1", "%Y-%W-%w") == 2018-01-01 (week == 1,而不是0)。

代码语言:javascript
复制
foo <- function(year, week) {
    if (week == 0) {
        year <- year - 1
        week <- data.table::week(as.Date(paste0(year, "-12-31"))) - 1
    }
    return(as.Date(paste0(c(year, week, "1"), collapse = "-"), "%Y-%W-%w"))
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70876852

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档