【问题标题】:How to convert Dates to Quarters in R如何在 R 中将日期转换为季度
【发布时间】:2015-07-20 17:02:04
【问题描述】:

我有一个如下格式的面板数据集

Individual    Date
A             05/10/2010
A             06/11/2011
A             21/07/2012
B             22/02/2010
B             15/03/2011
B             28/09/2012

我想将日期转换为季度,这样 2010 年的季度应该是 1、2、3、4....,2011 年的季度应该从 5 开始到 8...,2012 年的季度应该从 9 开始直到 12 点。

任何人都可以建议在 R 中执行此操作的代码吗?

【问题讨论】:

  • this one,或许多其他人。
  • 这很可能不是骗子。 OP 正在寻找将持续到接下来几年的季度计数。最有可能最好创建一个从第一个日期到最后一个日期的四分之一向量。
  • 或者,从a$yq <- as.yearqtr(a$Date, format = "%d/%m/%Y")开始,你可以通过a$yq_num<-sapply(sub("\\d{3}(\\d)\\sQ(\\d)", "4*\\1+\\2", a$yq), function(x)eval(parse(text=x)))得到你想要的

标签: r datetime


【解决方案1】:
library(zoo)
df$Date <- strptime(df$Date, "%d/%m/%Y")
x <- as.numeric(as.yearqtr(df$Date))
firstyr <- as.numeric(as.character(strftime(min(df$Date), "%Y")))
df$quarter <- (x-(firstyr-1))/.25-3
#   Individual       Date quarter
# 1          A 05/10/2010       4
# 2          A 06/11/2011       8
# 3          A 21/07/2012      11
# 4          B 22/02/2010       1
# 5          B 15/03/2011       5
# 6          B 28/09/2012      11

数据

df <- read.table(text="    Individual    Date
    A             05/10/2010
    A             06/11/2011
    A             21/07/2012
    B             22/02/2010
    B             15/03/2011
    B             28/09/2012", header=T)

【讨论】:

    猜你喜欢
    • 2021-07-26
    • 1970-01-01
    • 2018-10-31
    • 2022-11-09
    • 1970-01-01
    • 2016-02-10
    • 1970-01-01
    • 2015-09-13
    • 1970-01-01
    相关资源
    最近更新 更多