我已通过下载的Yahoo Finance .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')]