如何通过POSIXct将日期作为年/周转换为一周的第一天?

时间:2018-05-03 12:47:13

标签: r posixct

我想转换

myDate=as.character("2017/02")

,其格式为年/周至本周第一天的日期。所以我试过了:

print(as.POSIXct(myDate,format="%Y/%U"))

然而,这给了我

[1] "2017-05-03 CEST"

2017年第二周的第一天肯定

问题:如何更改as.POSIXct(myDate,format="%Y/%U")以使其按上述方式运作?

2 个答案:

答案 0 :(得分:2)

一年零一周不是合适的日期。一天需要与一周相关联。例如:

myDate=as.character("2017/02")    
as.POSIXct(paste(myDate, "0"),format="%Y/%U %w")

#[1] "2017-01-08 EST"

这假设一周的第一天是星期天。如果您更喜欢星期一,请参阅%u选项。

答案 1 :(得分:1)

这是一种可行的方法:

myDate=as.character("2017/02")

创建指定年份的日历(yyyy / dd / mm)(例如,2017年)

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"

NB :在本例中,星期一开始