我将一个 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 为两年中的每一年返回这些数字,而不是仅仅返回所有数据?

例如将 R 与熟悉的 SQL 语句结合起来:
median(data$Close)
GROUP BY YEAR(Date);

我希望得到一些返回,如:
2013 167.5
2014 175

最佳答案

你可以试试(在 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)

关于R组按年,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28143510/

10-11 18:39