我将一个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
答案 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)