r语言 - 根据每日回报数据计算年回报



我通过下载的雅虎财经.csv文件导入了ADSK的每日回报数据。

ADSKcsv <- read.csv("ADSK.csv", TRUE)

我已将.csv文件转换为数据框

class(ADSKcsv)

我选择了我想使用的两个相关列,并试图取每年所有每日回报的平均值。我不知道该怎么做。

aggregate(Close~Date, ADSK, mean)

上面的代码生成每个日期的平均计算。我的目标是根据这些数据计算同比回报,首先将每日回报转换为年回报,然后使用年回报来计算同比回报。我将不胜感激任何帮助。

我可以建议一个更简单的方法吗?

library(tidyquant)
ADSK_yearly_returns_tbl <- tq_get("ADSK") %>%
tq_transmute(select = close,
mutate_fun = periodReturn,
period = "yearly")
ADSK_yearly_returns_tbl

如果您运行上面的代码,它将下载感兴趣的符号的历史回报(在本例中ADSK(,然后计算年度回报。使用此工作流的另一个好处是,您可以换掉任何感兴趣的符号,而无需手动下载和读取它们。此外,它还为您节省了计算平均每日回报的额外步骤。

您可以从date中提取年份值,然后执行aggregate

这可以在基础 R 中完成:

aggregate(Close~year, transform(ADSKcsv, year = format(Date, '%Y')), mean)

dplyr

library(dplyr)
ADSKcsv %>%
group_by(year = format(Date, '%Y')) %>%
#Or using lubridate's year function
#group_by(year = lubridate::year(Date)) %>%
summarise(Close = mean(Close))

data.table

library(data.table)
setDT(ADSKcsv)[, .(Close = mean(Close)), format(Date, '%Y')]

最新更新