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或fromzoo
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))