我有日期,格式为年月日,我想将其转换为年月周的格式,如下所示:
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
data$dateweek <- format(as.POSIXct(data$date), '%Y-%m-%V')
,即使用%V
而不是%U
。> format(as.POSIXct('2015-01-01'), '%Y-%m-%V') [1] "2015-01-01"
- LyzandeRformat(as.POSIXct('2015-01-01'), '%Y-%m-%V') [1] "2015-01-01"
。另外,week
函数来自哪个包? - LyzandeRlubridate
。如果您键入?week
,您可以看到如何计算周。它与%V
格式仅略有不同。我建议您使用那个,即data$dateweek <- format(as.POSIXct(data$date), '%Y-%m-%V')
。实际上,在您的情况下,两者的计算应该是相同的(使用%V格式)。 - LyzandeR