我有一个每日数据的数据框:df有四列:Date, A, B, C
我试图按列获取每周数据的平均值.我试过了:
library(xts)
xdf <- xts(df[ ,-1],as.Date(df$Date))
apply.weekly(xdf,mean)
Run Code Online (Sandbox Code Playgroud)
但是这给了我所有列的平均值.我需要每列的每周手段.
谢谢您的帮助
首先得到一些数据(我将使用一个,data.frame因为你正在使用它,但我真的建议你使用时间序列对象的时间序列类)
getSymbols("SPY", src='yahoo', from='2012-05-01', to='2012-06-15',
return.class='data.frame')
#"SPY"
Run Code Online (Sandbox Code Playgroud)
apply.weekly将数据分成几周,并将功能应用于每周.apply.weekly(SPY, mean)会计算该周所有数据的平均值,但您希望它计算每周每列的平均值.所以,你必须apply mean每列
apply.weekly(SPY, function(x) apply(x, 2, mean))
# SPY.Open SPY.High SPY.Low SPY.Close SPY.Volume SPY.Adjusted
#2012-05-04 139.6425 140.4675 138.750 139.3275 149400050 138.6075
#2012-05-11 135.9480 136.9320 135.338 136.2040 173105700 135.5020
#2012-05-18 133.3000 133.9180 132.036 132.1760 229282720 131.4960
#2012-05-25 131.7660 132.6800 130.896 132.2140 176634780 131.5340
#2012-06-01 131.7100 132.8925 130.290 131.2725 191170200 130.5950
#2012-06-08 130.2780 131.3380 129.584 130.8580 175917220 130.1820
#2012-06-15 132.8420 133.7760 131.828 132.8020 184751180 132.2540
Run Code Online (Sandbox Code Playgroud)
作为参考,apply.weekly是一个包装器,period.apply所以你也可以得到上面的结果
period.apply(SPY, endpoints(SPY, "weeks"), FUN=function(x) apply(x, 2, mean))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3736 次 |
| 最近记录: |