# create an example Date
date_1 <- as.Date("1990-01-01")
# extract year
as.numeric(format(date_1, "%Y"))
# extract month
as.numeric(format(date_1, "%m"))
142
你可以使用 format :
library(zoo)
x <- as.yearmon(Sys.time())
format(x,"%b")
[1] "Mar"
format(x,"%Y")
[1] "2012"
0
对于大型载体:
y = as.POSIXlt(date1)$year + 1900 # x$year : years since 1900
m = as.POSIXlt(date1)$mon + 1 # x$mon : 0–11
6 回答
对
"yearmon"
类的对象使用format()
方法 . 这是您的示例日期(正确创建!)然后我们可以根据需要提取日期部分:
这些作为字符返回 . 在适当的情况下,如果您希望将年份或数字月份作为数字变量,请包装
as.numeric()
,例如有关详细信息,请参阅
?yearmon
和?strftime
- 后者说明了您可以使用的占位符字符 .lubridate package对于这种事情是惊人的:
我知道OP在这里使用的是
zoo
,但是我发现这个线程在搜索同一问题的标准ts
解决方案 . 所以我想我也会为ts
添加一个zoo
的免费答案 .你可以使用
format
:对于大型载体:
这个问题没有准确说明预期的输出是什么,但假设月份你想要月份数(1月= 1)和你想要数字4位数年份的那一年假设我们刚刚运行了问题中的代码: