2019年7月5日金曜日

年と月の計算 yearmon mfrow




> wp
           result period_length         rate  open_p close_p
 1 1973 1.3763938            28  0.011474868   84.30  116.03
 5 1976 1.3013769            16  0.016600207   76.98  100.18
10 1978 0.9423369            15 -0.003951666   98.85   93.15
12 1980 1.1883753             6  0.029182211  114.24  135.76
 1 1984 1.3672189            17  0.018569047  119.52  163.41
 2 1985 1.1075926             3  0.034649717  163.58  181.18
 8 1987 1.3967474            13  0.026036742  236.12  329.80
12 1988 1.0727335             9  0.007831630  258.89  277.72
 2 1990 0.9751147             4 -0.006280247  340.36  331.89
 8 1991 1.1498066             7  0.020142134  343.91  395.43
 4 1992 0.9950124             4 -0.001249244  417.03  414.95
 9 1994 1.0727019            22  0.003195123  431.35  462.71
10 1995 1.0674621             4  0.016454915  544.75  581.50
 9 1997 1.4893871            20  0.020117927  636.02  947.28
 3 2000 1.3639946            17  0.018427587 1098.67 1498.58
 4 2002 1.0345650             7  0.004866239 1040.94 1076.92
 3 2004 1.3277960            12  0.023908021  848.18 1126.21
 5 2006 1.0659588            12  0.005337085 1191.50 1270.09
 6 2007 1.1836842            12  0.014151848 1270.06 1503.35
 5 2010 1.4932221            15  0.027089509  729.57 1089.41
 2 2011 1.1983603             7  0.026187620 1107.53 1327.22
 3 2012 1.1295682             4  0.030927485 1246.91 1408.47
 3 2014 1.2994239            18  0.014657552 1440.90 1872.34
12 2014 1.0273593             4  0.006770750 2004.07 2058.90
11 2017 1.2807753            19  0.013109691 2067.17 2647.58
>

のとき、その20番目から25番目までのエントリを対象に一括でグラフを書く。パラメータ中のデータ(月数)をyearmon で正確に計算するために12で割っている。1/12で1ヶ月、7/12で7ヶ月、19/12で1年と7ヶ月。

par(mfrow=c(3,2))
for(i in seq(1,6,1)){plot.default(to.monthly(SP5)[,4][paste(as.Date((yearmon(index(wp))[20:25] -(wp[20:25][,2]/12))[i]),as.Date(index(wp[20:25])[i]),sep="::")]) }


OR

あるいは、mondateを使って月数の計算を行う。またここでは最初の月を計算ミスするバグを修正するため’+1’を追加した。下の図はバグあり期間計算で作成したもので実際より一月早く始まっている。

for(i in seq(1,6,1)){plot.default(to.monthly(SP5)[,4][paste(as.Date(mondate(index(wp))[20:25][i] -    as.vector(wp[,2][20:25])[i]+1),as.Date(index(wp[20:25])[i]),sep="::")]) }




14番目から19番目までのエントリを対象に一括でグラフを書くときは以下の通り。序数を指定する場所が三箇所あることに注意。

for(i in seq(1,6,1)){plot.default(to.monthly(SP5)[,4][paste(as.Date((yearmon(index(wp))[14:19] -(wp[14:19][,2]/12))[i]),as.Date(index(wp[14:19])[i]),sep="::")]) }

0 件のコメント: