【问题标题】:Conversion of monthly and quarterly data into annual in R将月度和季度数据转换为 R 中的年度数据
【发布时间】:2021-03-08 15:00:58
【问题描述】:

您好,我正在尝试学习使用 FRED Data 将月度和季度数据转换为年度数据。我的数据如下所示:

   Date FEDFUNDS
7/1/2000    6.54
8/1/2000    6.5
9/1/2000    6.52
10/1/2000   6.51
11/1/2000   6.51
12/1/2000   6.4

以前,看到其他帖子我尝试使用以下将每月转换为每季度。

library(tidyverse)
data<- read_csv(file.choose())
head(data)
data$Date=as.Date(data$Date, formate="$m/$d/%y")
data<-arrange(data,Date)
library(zoo)
data$qdate<-as.yearqtr(data$Date)
library(date)
data_qrtly<-data %>%
  group_by(qdate) %>%
  summarise_all(mean)

但我很难尝试“DF”将月度或季度数据转换为年度数据。任何帮助将不胜感激。

【问题讨论】:

  • 如果 xyearqtryearmon 对象,则 as.integer(x) 是年份,因为两者都存储为月份或季度的年份 + 年份的分数。

标签: r data-conversion


【解决方案1】:

您想如何汇总数据?我假设你想要 FEDFUNDS 的mean 按年计算。这在tidyverse 中很简单:

library(tidyverse)
library(lubridate)

test_data <- tribble(~Date, ~FEDFUNDS,
                     "7/1/2000", 6.54,
                     "8/1/2000", 6.5,
                     "9/1/2000", 6.52,
                     "10/1/2000", 6.51,
                     "11/1/2000", 6.51,
                     "12/1/2000", 6.4)

#convert the date into a date type column
#create a new "year" column
test_data %>% 
  mutate(Date = lubridate::mdy(Date),
         year = lubridate::year(Date)) %>% 
  group_by(year) %>% 
  summarize(fedfunds_mean = mean(FEDFUNDS))

# A tibble: 1 x 2
year fedfunds_mean
<dbl>         <dbl>
2000          6.50

【讨论】:

  • 嗨,谢谢,我认为它非常有帮助。我有两个后续问题 1)我是 R 的新手,很抱歉提前提出这个愚蠢的问题,但是如何将 tribble 用于我的整个数据集而不是指定单个观察值?这是 30 年的时间序列观察,我了解您对 lubridate 所做的事情,但是关于如何使用整个数据集的快速建议将非常有帮助。 2)无论如何我可以将整个新年列转换为数据集(如 write.csv 命令?)
  • @ShaneMurphy 1) 我只使用 tribble 创建玩具数据集。您需要使用 readr::read_csv 或 read_tsv 之类的东西将 FRED 数据集读入 R,具体取决于分隔符。我不知道你的数据源是什么样的。 github.com/business-science/tidyquantsboysel.github.io/fredr 是两个可用于从 FRED API 检索数据的包。 2)我不知道“转换为数据集”是什么意思。 write.csv 将数据帧(不是单个列)保存到磁盘。
猜你喜欢
  • 2023-03-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-28
  • 2022-01-01
  • 2021-10-14
  • 2019-12-06
  • 1970-01-01
相关资源
最近更新 更多