RBbg - 重塑时间序列数据

swy*_*wyx 0 r time-series reshape

有没有更好的方法来重塑数据帧数据?

temp <- bdh(conn,c("AUDUSD Curncy","EURUSD Curncy"),"PX_LAST","20110101")

head(temp)
         ticker       date PX_LAST
1 AUDUSD Curncy 2011-01-01      NA
2 AUDUSD Curncy 2011-01-02      NA
3 AUDUSD Curncy 2011-01-03  1.0205
4 AUDUSD Curncy 2011-01-04  1.0040
5 AUDUSD Curncy 2011-01-05  1.0014
6 AUDUSD Curncy 2011-01-06  0.9969
Run Code Online (Sandbox Code Playgroud)

tail(temp)
            ticker       date PX_LAST
2127 EURUSD Curncy 2013-11-26  1.3557
2128 EURUSD Curncy 2013-11-27  1.3570
2129 EURUSD Curncy 2013-11-28  1.3596
2130 EURUSD Curncy 2013-11-29  1.3591
2131 EURUSD Curncy 2013-11-30      NA
2132 EURUSD Curncy 2013-12-01      NA
Run Code Online (Sandbox Code Playgroud)

换句话说,数据只是垂直地相互固定,为了使它们工作,需要进一步处理.如何将这些数据重新组合成各种代码,即

head(temp)
           AUDUSD.Curncy EURUSD.Curncy
2011-01-01            NA            NA
2011-01-02            NA            NA
2011-01-03        1.0205        1.3375
2011-01-04        1.0040        1.3315
2011-01-05        1.0014        1.3183
2011-01-06        0.9969        1.3028
Run Code Online (Sandbox Code Playgroud)

我用Google搜索的所有重塑问题都没有我想要的那种重塑.我已经实现了我自己的零碎解决方案,但出于学习的目的,我想问你们,如果有一个更优雅的解决方案吗?

Hen*_*rik 5

你可以试试read.zoo.使用index.column,以指定列索引/时间被存储,并且根据重塑数据splitcolumnn.结果是zoo时间序列

library(zoo)

z <- read.zoo(text = "ticker     date PX_LAST
1 AUDUSD 2011-01-01      NA
2 AUDUSD  2011-01-02      NA
3 AUDUSD 2011-01-03  1.0205
4 AUDUSD 2011-01-04  1.0040
5 AUDUSD  2011-01-05  1.0014
6 AUDUSD 2011-01-06  0.9969
2127 EURUSD  2013-11-26  1.3557
2128 EURUSD  2013-11-27  1.3570
2129 EURUSD  2013-11-28  1.3596
2130 EURUSD  2013-11-29  1.3591
2131 EURUSD  2013-11-30      NA
2132 EURUSD  2013-12-01      NA", index.column = "date", split = "ticker")

z
#            AUDUSD EURUSD
# 2011-01-01     NA     NA
# 2011-01-02     NA     NA
# 2011-01-03 1.0205     NA
# 2011-01-04 1.0040     NA
# 2011-01-05 1.0014     NA
# 2011-01-06 0.9969     NA
# 2013-11-26     NA 1.3557
# 2013-11-27     NA 1.3570
# 2013-11-28     NA 1.3596
# 2013-11-29     NA 1.3591
# 2013-11-30     NA     NA
# 2013-12-01     NA     NA

str(z)
Run Code Online (Sandbox Code Playgroud)