0

我有一个列表,每个成员都是一只股票,以及各个领域的彭博历史数据。例如:

> 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

我从这个列表中创建了 5 个 xts 对象,每个对象都包含过去每一天每只股票的特定数据点:

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])
}))

这很好用,创建了一个我期望的结构:

> 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

但是,这会在某些日期创建重复条目:

> 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

那么我该如何阻止呢?

我认为时间一定不能匹配或一些这样的废话,所以我试图去掉时间:

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')))
}))

但这不起作用:

> 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

有任何想法吗???

4

0 回答 0