使用lubridate从周数中查找月份

时间:2014-01-31 16:23:28

标签: r date lubridate

我有这个日期列表:

library(lubridate)
my.dates = ymd(c("2013-12-14", "2014-01-18", "2014-01-27", "2013-12-13", "2013-12-29", "2013-12-06"))

当我将这些日期转换为周数时,以下lubridate::week函数会输出数字向量:

week(my.dates)
[1] 50  3  4 50 52 49

我可以让lubridate输出一个日期(“POSIXct”“POSIXt”)对象,将my.dates转换为周数和年号。因此输出应该是一个日期对象(不是字符或数字向量),格式如下:

[1] "50-2013" "3-2014"   "4-2014"   "50-2013" "52-2013" "49-2013"

我对使用lubridate的解决方案特别感兴趣。

1 个答案:

答案 0 :(得分:3)

在回答对该问题的评论时,问题已经多次改变,但目前请求的输入为my.dates,输出的格式为周 - 年(并未在主题中描述)问题)。

要将my.dates转换为周年格式,请尝试以下weekyear为rubridate函数:

> paste(week(my.dates), year(my.dates), sep = "-")
[1] "50-2013" "3-2014"  "4-2014"  "50-2013" "52-2013" "49-2013"

问题中的示例输出在本周没有使用前导零,但如果本周需要前导零,那么:

> sprintf("%02d-%d", week(my.dates), year(my.dates))
[1] "50-2013" "03-2014" "04-2014" "50-2013" "52-2013" "49-2013"

请注意,输出是POSIXt类对象并且格式为周 - 年的要求是矛盾的,因为格式是它表示为字符对象而不是POSIXt类对象本身的属性。同样如问题评论中所述,周年并不能唯一地标识日期。