2017-05-20 10 views
1

私はquantmodを初めて使用しています。日付をサブセット化する方法はたくさんありますが、毎年特定の日、つまり毎年12月24日にサブセット化する必要があります長年のデータセットのうちquantmodはこの機能を備えていないようです。それを行う方法はありますか?サブセットxtsまたはdata.frameを毎年1つの特定の日に設定する

例:

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

と、あなたは2007年から始まるデータを取得し、私はちょうど

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

答えて

1

あなたはこのような何か試すことができてデータフレームにそれをサブセットしたい:

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

申し訳ありませんが、私は入力した後に "AMD.Open AMD.High AMD.Low AMD.Close AMD.Volume" を取得 AMD [.indexmon(AMD)== 11&.indexmday(AMD) == 24]。 私は何が欠けていますか? –

+0

これらは、 'getSymbols( 'AMD'、src = 'google')'と同じ列です。あなたは何を期待しましたか? – LyzandeR

+0

この例のようにデータの行を取得できませんか? –

1

LyzandeRの答えに追加するだけで、データをチブルに変換してlubridate

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

それもいいです – LyzandeR

+0

多くを学ぶ。ありがとう! –

関連する問題