R dataframe-添加起始日期为年季度的新列

R dataframe-添加起始日期为年季度的新列,r,date,dataframe,R,Date,Dataframe,我有一个数据帧,如: yq store value 2014 Q1 1000 89 如何添加一个额外的列,该列基于第1列中的年度季度,包含该季度的开始日期。因此,在本例中,我想添加:01-01-2014。例如,您可以使用: 库(tidyverse) df假设数据如末尾的注释所示,首先将yq转换为yearqtr对象。此类对象在内部表示为年+分形,其中第一季度、第二季度、第三季度和第四季度的分形分别为0、1/4、2/4和3/4。它们的渲染如下所示,并且可以很容易地进

我有一个数据帧,如:

yq       store   value    
2014 Q1  1000    89

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

例如,您可以使用:

库(tidyverse)

df假设数据如末尾的注释所示,首先将
yq
转换为
yearqtr
对象。此类对象在内部表示为年+分形,其中第一季度、第二季度、第三季度和第四季度的分形分别为0、1/4、2/4和3/4。它们的渲染如下所示,并且可以很容易地进行操作,例如,下一个季度是
yq+1/4
。有关更多信息,请参见
?yearqtr

给定
yearqtr
对象,您甚至可能不需要
Date
列;但是,如果您这样做,则将其转换为
Date
class。默认的转换是给出季度的第一个季度。(使用
as.Date
frac=1
参数获取季度末。)

给予:

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

transform(DF, Date = as.Date(as.yearqtr(yq)))
注 假设重复显示的输入为:

DF <- structure(list(yq = structure(1L, .Label = "2014 Q1", class = "factor"), 
    store = 1000L, value = 89L), class = "data.frame", row.names = c(NA, 
-1L))

DF或from
zoo
as.Date(as.yearqtr(DF$yq))
@akrun我也这么想,但在
zoo::as.yearqtr(DF$yq,format=“%yq%Q”)上运行
as.Date
会返回error@Konrad它已经是默认格式,因此不需要指定format@akrun像那样
zoo::as.Date(zoo::as.yearqtr(df$yq,format=“%yq%Q”)
我从错误的命名空间调用了
as.Date
       yq store value       Date
1 2014 Q1  1000    89 2014-01-01
transform(DF, Date = as.Date(as.yearqtr(yq)))
DF <- structure(list(yq = structure(1L, .Label = "2014 Q1", class = "factor"), 
    store = 1000L, value = 89L), class = "data.frame", row.names = c(NA, 
-1L))