将四分之一字符转换为R中的日期对象

问题描述 投票:0回答:1

我有一个数据集,其中包含有关观测值“周期”的信息,该信息代表季度的特征。像这样的东西:

df$Period
   [1] Jul 06 - Sep 06 Oct 06 - Dec 06 Apr 06 - Jun 06 Apr 08 - Jun 08 Jan 08 - Mar 08 Oct 08 - Dec 08 Jul 08 - Sep 08 Jul 14 - Sep 14 Jan 14 - Mar 14 Oct 14 - Dec 14
  [11] Apr 14 - Jun 14 Oct 07 - Dec 07 Jul 07 - Sep 07 Apr 07 - Jun 07 Jan 07 - Mar 07 Oct 11 - Dec 11 Jul 11 - Sep 11 Jan 11 - Mar 11 Apr 11 - Jun 11 Jan 15 - Mar 15
  [21] Oct 15 - Dec 15 Jul 15 - Sep 15 Apr 15 - Jun 15 Jul 06 - Sep 06 Apr 06 - Jun 06 Oct 06 - Dec 06 Apr 07 - Jun 07 Oct 07 - Dec 07 Jan 07 - Mar 07 Jul 07 - Sep 07
  [31] Jan 08 - Mar 08 Apr 08 - Jun 08 Oct 08 - Dec 08 Jul 08 - Sep 08 Apr 11 - Jun 11 Jul 11 - Sep 11 Oct 11 - Dec 11 Jan 11 - Mar 11 Oct 14 - Dec 14 Jan 14 - Mar 14
  [41] Jul 14 - Sep 14 Apr 14 - Jun 14 Apr 15 - Jun 15 Oct 15 - Dec 15 Jan 15 - Mar 15 Jul 15 - Sep 15 Apr 07 - Jun 07 Oct 07 - Dec 07 Jul 07 - Sep 07 Jan 07 - Mar 07
  [51] Oct 11 - Dec 11 Apr 11 - Jun 11 Jan 11 - Mar 11 Jul 11 - Sep 11 Apr 15 - Jun 15 Oct 15 - Dec 15 Jan 15 - Mar 15 Jul 15 - Sep 15 Jan 11 - Mar 11 Apr 11 - Jun 11
  [61] Oct 11 - Dec 11 Jul 11 - Sep 11 Oct 15 - Dec 15 Jul 15 - Sep 15 Jan 15 - Mar 15 Apr 15 - Jun 15 Jan 07 - Mar 07 Apr 07 - Jun 07 Oct 07 - Dec 07 Jul 07 - Sep 07
  [71] Oct 11 - Dec 11 Jan 11 - Mar 11 Jul 11 - Sep 11 Apr 11 - Jun 11 Oct 15 - Dec 15 Apr 15 - Jun 15 Jan 15 - Mar 15 Jul 15 - Sep 15 Jul 11 - Sep 11 Jan 11 - Mar 11
  [81] Oct 11 - Dec 11 Apr 11 - Jun 11 Jul 15

是否有使用lubridate将其转换为数据对象的方法?我尝试了其他类似的事情:

a <-  as.numeric(df$Period)
library(lubridate)
a <- quarter(a, with_year = TRUE)

以及与此类似的许多类似迭代,但我无法真正掌握。

谢谢!

r time dplyr tidyverse lubridate
1个回答
1
投票

假设输入如下所示,我们可以将其分为from和to并转换为yearmon,它表示年/月为年份+分数,其中分数= 0表示1月,1/12表示2月,...,11/12表示Dec(例如,向这样的对象添加1/12会使月份增加1)并显示,如图所示。如果x确实是字符而不是因数,那么as.character(x)可以写成x

library(zoo)
x <- c("Jul 06 - Sep 06", "Oct 06 - Dec 06", "Apr 06 - Jun 06", "Apr 08 - Jun 08")

dat <- read.table(text = as.character(x), sep = "-", strip.white = TRUE,
 col.names = c("from", "to"))
transform(dat, from = as.yearmon(from, "%b %y"), to = as.yearmon(to, "%b %y")) 

给予:

      from       to
1 Jul 2006 Sep 2006
2 Oct 2006 Dec 2006
3 Apr 2006 Jun 2006
4 Apr 2008 Jun 2008
© www.soinside.com 2019 - 2024. All rights reserved.