I have a list, with each member being a stock, and various fields of historical bloomberg data. For example:
> head(isData[[2]])
date CUR_MKT_CAP OPERATING_INCOME_SEQ_GROWTH OPER_ROE PX_LAST SHORT_AND_LONG_TERM_DEBT
1 1999-12-31 NA NA NA 62.33 NA
2 2000-01-01 NA NA NA 62.33 NA
3 2000-01-02 NA NA NA 62.33 NA
4 2000-01-03 NA NA NA 62.93 NA
5 2000-01-04 NA NA NA 61.88 NA
I am creating from this list 5 xts objects, each containing the particular data point of every stock at every day in the past:
oigIS <- do.call(merge.xts, lapply(isData, function(x) {
if(!(is.null(x$OPERATING_INCOME_SEQ_GROWTH)))
xts(x$OPERATING_INCOME_SEQ_GROWTH/100, order.by = x[,1])
}))
This works well, creating a structure as I would expect:
> head(oigIS)[,1:5]
ALPI.IS.Equity ACC.IS.Equity AHOT.IS.Equity AJP.IS.Equity X3M.IS.Equity
1999-12-31 NA NA NA NA 1.712294
2000-01-01 NA NA NA NA 1.712294
2000-01-02 NA NA NA NA 1.712294
2000-01-03 NA NA NA NA 1.712294
2000-01-04 NA NA NA NA 1.712294
2000-01-05 NA NA NA NA 1.712294
HOWEVER, this creates duplicate entries on some dates:
> head(oigIS['200301/200302'],10)[,1:5]
ALPI.IS.Equity ACC.IS.Equity AHOT.IS.Equity AJP.IS.Equity X3M.IS.Equity
2003-01-01 NA NA NA NA 0.133008
2003-01-01 NA NA NA NA NA
2003-01-02 NA NA NA NA 0.133008
2003-01-02 NA NA NA NA NA
2003-01-03 NA NA NA NA 0.133008
2003-01-03 NA NA NA NA NA
2003-01-04 NA NA NA NA 0.133008
2003-01-04 NA NA NA NA NA
2003-01-05 NA NA NA NA 0.133008
2003-01-05 NA NA NA NA NA
So how do I stop this??
I assumed the time must not match up or some such nonsense, so I tried to strip out the time:
oigIS <- do.call(merge.xts, lapply(isData, function(x) {
if(!(is.null(x$OPERATING_INCOME_SEQ_GROWTH)))
xts(x$OPERATING_INCOME_SEQ_GROWTH/100, order.by = as.Date(format(x[,1], '%Y-%m-%d')))
}))
But this did not work:
> head(oigIS['200301/200302'],10)[,8:13]
X3M.IS.Equity ALST.IS.Equity AKOP.IS.Equity ADCIC.IS.Equity ABAN.IS.Equity AMRJ.IS.Equity
2003-01-01 0.133008 NA NA 0.086917 NA 0.175158
2003-01-01 NA NA NA NA NA NA
2003-01-02 0.133008 NA NA 0.086917 NA 0.175158
2003-01-02 NA NA NA NA NA NA
2003-01-03 0.133008 NA NA 0.086917 NA 0.175158
2003-01-03 NA NA NA NA NA NA
2003-01-04 0.133008 NA NA 0.086917 NA 0.175158
2003-01-04 NA NA NA NA NA NA
2003-01-05 0.133008 NA NA 0.086917 NA 0.175158
2003-01-05 NA NA NA NA NA NA
Any ideas???