2015-01-26 3 views
2

Я прочитал csv в R, и теперь у меня есть список данных.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 

Это цена акций фондовой Еогеасп день в течение периода 2 года с 1 января 2013 года - 31 декабря 2014 г. На данный момент я просто хочу, чтобы иметь возможность группировать в год, для любой функции или формулы.

Итак, давайте скажем, я хочу: median(data$Close)

возвращается: 177,515

Есть ли способ сказать R вернуть эти числа для каждого из этих двух лет, в отличие от просто всех данных?

например. совмещая R со знакомым заявление SQL:

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

Я в надежде получить что-то возвращается, как:

2013 167.5 
2014 175 
+0

Заинтересованы в понимании этого больше. Что делает Close ~ Year? Результаты дали 4 числа не два, как ожидалось: Год Закрыть 1 13 119.355 2 14 224,590 3 3 108.640 4 4 228.280 –

ответ

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) 
+0

@RichardScriven Да, спасибо, обновлено. –

+0

Спасибо за ответ, который возвращает то, что я хотел. Продолжаем держать вопрос открытым немного дольше. Я предполагал, что R будет иметь встроенные функции для этого –

+0

Спасибо за ответ. Провели некоторые быстрые исследования. Итак, как правило, если я хочу использовать группировку, я должен использовать tapply в качестве первого порта захода? Теперь я собираюсь связать функциональность группировки с функциональностью группировки. –