首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通过POSIXct将日期转换为年度/周到一周的第一天?

问如何通过POSIXct将日期转换为年度/周到一周的第一天?
EN

Stack Overflow用户
提问于 2018-05-03 12:47:12
回答 2查看 455关注 0票数 3

我想皈依

代码语言:javascript
复制
myDate=as.character("2017/02")

它是以年份/周的格式将日期设置为本周的第一天。所以我试着:

代码语言:javascript
复制
print(as.POSIXct(myDate,format="%Y/%U"))

然而,这给了我

代码语言:javascript
复制
[1] "2017-05-03 CEST"

这当然是,而不是2017年第二周的第一天。

问题:我需要如何更改as.POSIXct(myDate,format="%Y/%U")才能像上面所描述的那样工作?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-05-03 13:02:41

一年零一周不是一个合适的日期。一天需要和一周联系起来。例如:

代码语言:javascript
复制
myDate=as.character("2017/02")    
as.POSIXct(paste(myDate, "0"),format="%Y/%U %w")

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

这假设一周的第一天是星期天。如果您喜欢星期一,那么请看%u选项。

票数 2
EN

Stack Overflow用户

发布于 2018-05-03 13:17:54

以下是一种可能的办法:

代码语言:javascript
复制
myDate=as.character("2017/02")

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

代码语言:javascript
复制
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,此代码查找每周的第一天。

代码语言:javascript
复制
library("ISOweek")
first_day<-cumsum(ISOweekday(year_date)==1)

提取所指周的第一天

代码语言:javascript
复制
year_date[which(first_day==as.numeric(unlist(strsplit(myDate,split="/"))[2]))[1]]
[1] "2017-01-09"

NB:在本例中周一开始

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50155460

复制
相关文章

相似问题

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