如何更改为年月周格式?
问题描述:
我有日期的年,月,日的格式,我要转换为年,月,星期格式,像这样:如何更改为年月周格式?
date dateweek
2015-02-18 -> 2015-02-8
2015-02-19 -> 2015-02-8
2015-02-20 -> ....
2015-02-21
2015-02-22
2015-02-23
2015-02-24 ...
2015-02-25 -> 2015-02-9
2015-02-26 -> 2015-02-9
2015-02-27 -> 2015-02-9
我试图
data$dateweek <- week(as.POSIXlt(data$date))
,但仅返回星期没有相应的年份和月份。
我也试过:
data$dateweek <- as.POSIXct('2015-02-18')
data$dateweek <- format(data$dateweek, '%Y-%m-%U')
# data$dateweek <- format(as.POSIXct(data$date), '%Y-%m-%U')
但相应的列看起来很奇怪:
date datetime
2015-01-01 2015-01-00
2015-01-02 2015-01-00
2015-01-03 2015-01-00
2015-01-04 2015-01-01
2015-01-05 2015-01-01
2015-01-06 2015-01-01
2015-01-07 2015-01-01
2015-01-08 2015-01-01
2015-01-09 2015-01-01
2015-01-10 2015-01-01
2015-01-11 2015-01-02
答
您需要使用'%Y-%m-%V
格式更改:
mydate <- as.POSIXct('2015-02-18')
> format(mydate, '%Y-%m-%V')
[1] "2015-02-08"
从文档strptime
:
%V
周,然后它被认为是1星期,否则,它是前一年的最后一周,下一周是1周(接受但被忽略的输入。)
而且也有(美国通用) :
%U
一周中的一周为十进制数(00-53),使用星期日作为一周中的第一天(通常以一年的第一个星期日作为第一周的第一天)。美国的公约。
这实际上取决于你想用于哪种情况。
mydate <- as.POSIXct('2015-02-18')
> format(mydate, '%Y-%m-%U')
[1] "2015-02-07"
在你的情况,你应该做的:
data$dateweek <- format(as.POSIXct(data$date), '%Y-%m-%U')
的行为很奇怪。往上看。 thx – Mamba
有什么奇怪的呢?美国的惯例是不同的。您可能需要常规约定:'data $ dateweek 格式(as.POSIXct('2015-01-01'),'%Y-%m-%V') [1]“2015-01-01”' – LyzandeR
奇怪的是数据$ week Mamba