首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >从zoo::yearmon对象中提取月份和年份

从zoo::yearmon对象中提取月份和年份
EN

Stack Overflow用户
提问于 2012-03-17 19:23:45
回答 7查看 171.4K关注 0票数 115

我有一个yearmon对象:

代码语言:javascript
复制
require(zoo)
date1 <- as.yearmon("Mar 2012", "%b %Y")
class(date1)
# [1] "yearmon"

我如何从中提取月份和年份?

代码语言:javascript
复制
month1 <- fn(date1)
year1 <- fn(date1)

我应该用什么函数来代替fn()

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2012-03-17 19:35:34

对类"yearmon"的对象使用format()方法。这是您的示例日期(正确创建!)

代码语言:javascript
复制
date1 <- as.yearmon("Mar 2012", "%b %Y")

然后我们可以根据需要提取日期部分:

代码语言:javascript
复制
> format(date1, "%b") ## Month, char, abbreviated
[1] "Mar"
> format(date1, "%Y") ## Year with century
[1] "2012"
> format(date1, "%m") ## numeric month
[1] "03"

这些将作为字符返回。在适当的情况下,如果希望年或数字月作为数值变量,则在as.numeric()中换行,例如

代码语言:javascript
复制
> as.numeric(format(date1, "%m"))
[1] 3
> as.numeric(format(date1, "%Y"))
[1] 2012

有关详细信息,请参阅?yearmon?strftime -后者解释了可以使用的占位符字符。

票数 147
EN

Stack Overflow用户

发布于 2012-03-17 20:31:49

对于这类事情,lubridate package非常棒:

代码语言:javascript
复制
> require(lubridate)
> month(date1)
[1] 3
> year(date1)
[1] 2012
票数 105
EN

Stack Overflow用户

发布于 2014-09-04 18:08:08

我知道这里的OP使用的是zoo,但我发现这个线程正在搜索解决相同问题的标准ts解决方案。所以我想我也应该为ts添加一个zoo-free回答。

代码语言:javascript
复制
# 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"))
票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9749598

复制
相关文章

相似问题

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