R组按年份

时间:2015-01-26 01:11:08

标签: r

我将一个csv读入R,现在我有一个数据列表。

head(data)

       Date   Open   High    Low  Close  Volume
1 31-Dec-14 223.09 225.68 222.25 222.41 2402097
2 30-Dec-14 223.99 225.65 221.40 222.23 2903242
3 29-Dec-14 226.90 227.91 224.02 225.71 2811828
4 26-Dec-14 221.51 228.50 221.50 227.82 3327016
5 24-Dec-14 219.77 222.50 219.25 222.26 1333518
6 23-Dec-14 223.81 224.32 219.52 220.97 4513321

tail(data)
Date  Open  High   Low Close  Volume
499 9-Jan-13 34.01 34.19 33.40 33.64  697979
500 8-Jan-13 34.50 34.50 33.11 33.68 1283985
501 7-Jan-13 34.80 34.80 33.90 34.34  441909
502 4-Jan-13 34.80 34.80 33.92 34.40  673993
503 3-Jan-13 35.18 35.45 34.75 34.77  741941
504 2-Jan-13 35.00 35.45 34.70 35.36 1194710

这是2013年1月1日至2014年12月31日期间2年期间股票日期的股票价格。目前我只想按年度分组,任何功能或公式。

所以,我想说:median(data$Close)

返回:177.515

有没有办法告诉R在两年中每一年都返回这些数字而不仅仅是所有数据?

e.g。将R与熟悉的SQL语句结合起来:

median(data$Close)
GROUP BY YEAR(Date);

我希望得到像以下一样的回复:

2013 167.5
2014 175

1 个答案:

答案 0 :(得分:5)

您可以尝试(在lubridate包的帮助下)

require(lubridate)
years <- year(as.Date(data$Date, "%d-%b-%y"))
tapply(data$Close, years, median)

或者你可以使用(内置R功能)

dates <- as.Date(data$Date, "%d-%b-%y")
years <- format(dates, "%Y")
tapply(data$Close, years, median)