将字符/字符串向量转换为日期

时间:2017-07-07 10:16:08

标签: r datetime type-conversion

我正在尝试将季度日期转换为" DATE" R中的对象

我的载体是:

r <- c("2010-Q4" "2011-Q1" "2011-Q2" "2011-Q3" "2011-Q4" "2012-Q1" "2012-Q2" "2012-Q3" "2012-Q4" "2013-Q1" "2013-Q2" "2013-Q3" "2013-Q4" "2014-Q1" "2014-Q2" "2014-Q3")

这是一个随机日期向量

我正在尝试应用this post中提供的解决方案,但不明白建议的答案不起作用,我得到的只是NA

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

阅读as.yearqtr的文档并设置适当的格式字符串对我有用:

> as.yearqtr(r,format="%Y-Q%q")
[1] "2010 Q4" "2011 Q1" "2011 Q2" "2011 Q3" "2011 Q4" "2012 Q1"

侧由端:

> data.frame(string=r,q=as.yearqtr(r,format="%Y-Q%q"))
   string       q
1 2010-Q4 2010 Q4
2 2011-Q1 2011 Q1
3 2011-Q2 2011 Q2
4 2011-Q3 2011 Q3
5 2011-Q4 2011 Q4
6 2012-Q1 2012 Q1

如果您想要基于季度第一天的Date对象:

> as.Date(as.yearqtr(r,format="%Y-Q%q"))
[1] "2010-10-01" "2011-01-01" "2011-04-01" "2011-07-01" "2011-10-01"
[6] "2012-01-01"

答案 1 :(得分:0)

我认为您的格式不正确。以下似乎有效:

library('zoo')
r <- c("2010-Q4", "2011-Q1", "2011-Q2")

# The format string encodes: %Y: 4 digit year, then a hyphen, 
# then a capital Q, then %q which refers to the actual quarterly digit.
as.yearqtr(r, format='%Y-Q%q') 
# [1] "2010 Q4" "2011 Q1" "2011 Q2"