R 从季度数据到年度数据

R 从季度数据到年度数据,r,dataframe,dplyr,time-series,lubridate,R,Dataframe,Dplyr,Time Series,Lubridate,我有一个如下所示的数据帧: head(df_HPI) HPI是我想转换为年度的季度指数。我有17个地区(即CCAA),因此我希望汇总HPI以包含每个地区的年度数据。我做了一些更改,但代码不起作用 # Convert series to annual data df_HPI <- df_HPI_original # Replace period format df_HPI <- data.frame(sapply(df_HPI, function(x) {gsub("T1","

我有一个如下所示的数据帧:

head(df_HPI)

HPI是我想转换为年度的季度指数。我有17个地区(即CCAA),因此我希望汇总HPI以包含每个地区的年度数据。我做了一些更改,但代码不起作用

# Convert series to annual data
df_HPI <- df_HPI_original

# Replace period format 
df_HPI <- data.frame(sapply(df_HPI, function(x) {gsub("T1","-01-01",x)})) # Q1
df_HPI <- data.frame(sapply(df_HPI, function(x) {gsub("T2","-04-01",x)})) # Q2
df_HPI <- data.frame(sapply(df_HPI, function(x) {gsub("T3","-07-01",x)})) # Q3
df_HPI <- data.frame(sapply(df_HPI, function(x) {gsub("T4","-10-01",x)})) # Q4

# Convert column into a date
df_HPI$Periodo <- as.Date(df_HPI$Periodo)

# Aggregate to annual data
df_HPI %>%
  mutate(Year=year(Periodo),
         Quarter=quarter(Periodo),
         Finyear = ifelse(Quarter <= 2, Year, Year+1)) %>% 
  group_by(Finyear, CCAA) %>%
  summarise(HPIy=mean(HPI))
#将序列转换为年度数据

df_HPI问题在于,通过
gsub
替换期间格式时,
HPI
列被转换为一个因子。因此,必须将其转换回数值。试试这个:

库(dplyr)
图书馆(lubridate)
种子(42)
#示例数据
第3季度2019T3区域1 0.2861395
#>4 2019T4地区1 0.8304476
#>5 2020T1区域1 0.6417455
#>6 2020T2区域1 0.5190959
#替换周期格式
df_HPI财政年度CCAA HPIy
#>         
#>2019年地区1 0.926
#>2 2019区域2 0.681
#>3 2020地区1 0.569
#>4 2020地区2 0.592
#>5 2021区域1 0.436
#>6 2021区域2 0.701

由(v0.3.0)于2020年4月4日创建。

欢迎使用堆栈溢出!我认为您需要为其他人提供一个数据样本,以复制您的问题。查找为R制作一个好的reprex。欢迎使用堆栈溢出。我建议你这样提问。这将最大限度地提高您获得好的、快速的答案的机会。您可以通过执行
dput(head(df_HPI))
将表格的前几行放入表格中,这样我们就可以处理一些数据,并确保我们的答案尽可能接近您的预期。我还建议避免使用
magrittr
和所有花哨的东西。首先构建一个基本函数来理解问题。