如何使用R中的每日收盘价计算个别公司25年的年平均股价?

时间:2017-08-07 17:00:50

标签: r

我的数据集如下所示:每个交易日从1991年到2016年,每日收盘价格为25年。

Company Code   Company Name       Daily Trading Dates   Daily Closing Share price

43677          CENTURY ENKA LTD.  1/1/1991              3550.00
 -do-           -do-              1/2/1991              3600.00
                                   .                    3700.00
                                   .                    3800.00
                                  12/31/1991             x
                                   .                     x
                                   .                     x
                                  1/1/2016               x
                                   .                     x
                                   .                     x
                                  12/31/2016             x

2 个答案:

答案 0 :(得分:1)

我认为SMA包中的TTR函数可能有所帮助。这是一个例子:

library(TTR)
p1 <- c(45,68,98,97,45,12,46,98,45,65,97,48,65,95) #dummy price data
SMA(p1,4) #calculate a 4 period simple moving average 
#here is outcome 
[1]    NA    NA    NA 77.00 77.00 63.00 50.00 50.25 50.25 63.50 76.25
[12] 63.75 68.75 76.25

因此,在SMA功能中,如果您将第二个参数设置为252 - 一年中的交易天数 - 我认为您将获得数据框中每个日期过去一年的年平均股价。

答案 1 :(得分:1)

我会使用包lubridate以及tapplyave。在下文中,我假设您的数据采用名为data.frame的{​​{1}}形式。

dat

两者之间的区别在于library(lubridate) yr <- year(mdy(date)) res1 <- tapply(dat$price, yr, FUN = mean) res2 <- ave(dat$price, yr, FUN = mean) 返回一个向量为输入向量长度的向量,而ave返回一个向量,该向量具有与由分组变量定义的组一样多的元素,这种情况tapply