在R中,我有一个具有周数和年份的数据集(见下文),我希望将其转换为周中相应的星期一的日期,我使用了as.Date()函数。这很好,除了第一周,其中函数返回NA作为对应的第一周的星期一属于前一年。因此,我希望函数返回星期一的日期,即使它不是同一年。有什么想法吗?
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
发布于 2022-01-27 10:51:42
你的代码很好。但是你只有一个问题:如果== 0周的话,那就是NA。如果周数是零,那么一年的第一天不是星期一。因此,您可以检查周号是否为零(并在前一年中找到星期一),或者像在示例中所做的那样。例如,as.Date("2018-1-1", "%Y-%W-%w") == 2018-01-01 (week == 1,而不是0)。
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"))
}https://stackoverflow.com/questions/70876852
复制相似问题