如何通过 POSIXct 将日期 year/week 转换为一周的第一天?
How to convert a date as year/week to the first day of the week via POSIXct?
我要转换
myDate=as.character("2017/02")
格式为 year/week 的日期是本周的第一天。所以我尝试了:
print(as.POSIXct(myDate,format="%Y/%U"))
然而,这给了我
[1] "2017-05-03 CEST"
肯定不是2017年第二周的第一天
问题:我需要如何更改 as.POSIXct(myDate,format="%Y/%U")
才能使其按上述方式工作?
一年零一周不是合适的日期。一天需要与一周相关联。例如:
myDate=as.character("2017/02")
as.POSIXct(paste(myDate, "0"),format="%Y/%U %w")
#[1] "2017-01-08 EST"
这假设一周的第一天是星期日。如果您喜欢星期一,请参阅 %u 选项。
这里有一个可能的方法:
myDate=as.character("2017/02")
创建指定年份(例如 2017)的日历 (yyyy/dd/mm)
year_date<-seq.Date(as.Date(paste0(substr(myDate,1,4),"/01/01")),as.Date(paste0(substr(myDate,1,4),"/12/31")),by=1)
使用库 ISOweek
,此代码查找每周的第一天
library("ISOweek")
first_day<-cumsum(ISOweekday(year_date)==1)
提取指定周的第一天
year_date[which(first_day==as.numeric(unlist(strsplit(myDate,split="/"))[2]))[1]]
[1] "2017-01-09"
注意:在此示例中,周从星期一
开始
我要转换
myDate=as.character("2017/02")
格式为 year/week 的日期是本周的第一天。所以我尝试了:
print(as.POSIXct(myDate,format="%Y/%U"))
然而,这给了我
[1] "2017-05-03 CEST"
肯定不是2017年第二周的第一天
问题:我需要如何更改 as.POSIXct(myDate,format="%Y/%U")
才能使其按上述方式工作?
一年零一周不是合适的日期。一天需要与一周相关联。例如:
myDate=as.character("2017/02")
as.POSIXct(paste(myDate, "0"),format="%Y/%U %w")
#[1] "2017-01-08 EST"
这假设一周的第一天是星期日。如果您喜欢星期一,请参阅 %u 选项。
这里有一个可能的方法:
myDate=as.character("2017/02")
创建指定年份(例如 2017)的日历 (yyyy/dd/mm)
year_date<-seq.Date(as.Date(paste0(substr(myDate,1,4),"/01/01")),as.Date(paste0(substr(myDate,1,4),"/12/31")),by=1)
使用库 ISOweek
,此代码查找每周的第一天
library("ISOweek")
first_day<-cumsum(ISOweekday(year_date)==1)
提取指定周的第一天
year_date[which(first_day==as.numeric(unlist(strsplit(myDate,split="/"))[2]))[1]]
[1] "2017-01-09"
注意:在此示例中,周从星期一
开始