2017-05-20 2 views
1

Ich bin neu zu quantmod, es hat viele Möglichkeiten, um Teilmenge Daten, aber ich brauche Teilmenge zu einem bestimmten Tag des Jahres, dh 12/24 jedes Jahr aus einem Datensatz von vielen Jahren und quantmod scheint diese Funktion nicht zu haben. Gibt es eine Möglichkeit, das zu tun?Teilmenge xts oder data.frame an nur einem bestimmten Tag jedes Jahr

Beispiel:

getSymbols('AMD',src='google') 

und Sie erhalten Daten ab 2007, und ich will es auf einen Datenrahmen der Teilmenge mit nur

2007-12-24 ... 
2008-12-24 ... 
2016-12-26 ... 
#and so on. 

Antwort

1

Sie können so etwas wie dies versuchen:

getSymbols('AMD',src='google') 
#indexmon==11 for every December and indexmday==24 for every 24th 
AMD[.indexmon(AMD)==11 & .indexmday(AMD)==24] 
#   AMD.Open AMD.High AMD.Low AMD.Close AMD.Volume 
#2007-12-24  7.78  7.88 7.68  7.77 9193719 
#2008-12-24  1.98  2.03 1.97  1.99 2912312 
#2009-12-24  9.79  9.95 9.78  9.91 11331966 
#2012-12-24  2.54  2.57 2.47  2.48 9625363 
#2013-12-24  3.77  3.80 3.75  3.77 5798855 
#2014-12-24  2.63  2.70 2.63  2.65 4624005 
#2015-12-24  2.88  3.00 2.86  2.92 11900888 
+0

Sorry, ich "AMD.Open AMD.High AMD.Low AMD.Close AMD.Volume" nur erhalten nach AMD [.indexmon (AMD) == 11 & .indexmday (AMD) eingeben == 24]. Was fehlt mir? –

+0

Ja, das sind genau die gleichen Spalten, die man mit 'getSymbols ('AMD', src = 'google') bekommt. Was hast du erwartet? – LyzandeR

+0

Sollte ich die Datenzeilen nicht wie im Beispiel gezeigt bekommen? –

1

Um LyzandeRs Antwort hinzuzufügen, können Sie die Daten auch in ein tibble umwandeln und lubridate verwenden :

library(tidyverse) 
library(lubridate) 
library(quantmod) 

getSymbols('AMD',src='google') 

AMD %>% as_tibble() %>% rownames_to_column("date") %>% 
    filter(month(date) == 12, day(date) == 24) 

     date AMD.Open AMD.High AMD.Low AMD.Close AMD.Volume 
     <chr> <dbl> <dbl> <dbl>  <dbl>  <dbl> 
1 2007-12-24  7.78  7.88 7.68  7.77 9193719 
2 2008-12-24  1.98  2.03 1.97  1.99 2912312 
3 2009-12-24  9.79  9.95 9.78  9.91 11331966 
4 2012-12-24  2.54  2.57 2.47  2.48 9625363 
5 2013-12-24  3.77  3.80 3.75  3.77 5798855 
6 2014-12-24  2.63  2.70 2.63  2.65 4624005 
7 2015-12-24  2.88  3.00 2.86  2.92 11900888 
+0

Das ist auch schön – LyzandeR

+0

Eine Menge lernen. Vielen Dank! –

Verwandte Themen