R数据帧-添加带有年份季度开始日期的新列

时间:2019-08-01 14:53:13

标签: r date dataframe

我有一个数据框,如:

yq       store   value    
2014 Q1  1000    89

如何添加一个额外的列,该列基于第1列中的年季度,该季度的开始日期。因此,在此示例中,我想添加:2014年1月1日。

2 个答案:

答案 0 :(得分:2)

例如,您可以使用lubridate

library(tidyverse)
df <- tibble(yq = "2014 Q1", store = 1e3, value = 89)

df_new <- df %>% 
    mutate(start_date = lubridate::yq(yq))

结果

# A tibble: 1 x 4
  yq      store value start_date
  <chr>   <dbl> <dbl> <date>    
1 2014 Q1  1000    89 2014-01-01

答案 1 :(得分:0)

假设数据与结尾处的注释相同,请首先将yq转换为yearqtr对象。这样的对象在内部表示为year + frac,其中Q1,Q2,Q3和Q4的frac = 0、1 / 4、2 / 4和3/4。它们呈现如下所示,并且可以很容易地进行操作,例如yq + 1/4是下一季度。有关更多信息,请参见?yearqtr

鉴于yearqtr对象,您甚至可能不需要Date列;但是,如果您这样做,则将其转换为Date类。默认转换为给出季度的第一天。 (使用frac=1的{​​{1}}自变量获取季度末。)

as.Date

给予:

library(zoo)
transform(transform(DF, yq = as.yearqtr(yq)), Date = as.Date(yq))

如果您不需要 yq store value Date 1 2014 Q1 1000 89 2014-01-01 作为yq对象,则可以将其略微缩短:

yearqtr

注意

可重复显示的输入假定为:

transform(DF, Date = as.Date(as.yearqtr(yq)))