在R中重新格式化数据帧

时间:2014-01-27 20:29:04

标签: r

我正在尝试重新格式化R中的数据框,该数据框具有根据股票行情和日期的股票回报数据列。例如:

    ticker  date    returns
1   EWST    20060131    -0.016495
2   EWST    20060228    -0.010537
3   EWST    20060331    0.170394
4   EWST    20060428    -0.094631
5   EWST    20060531    -0.010452
6   EWST    20060630    -0.076387
7   EWST    20060731    0.157417
8   EWST    20060831    0.123574
9   EWST    20060929    -0.05417
10  EWST    20061031    0.007273
11  EWST    20061130    0.051444
12  EWST    20061229    -0.037294
13  EWST    20070131    0.023279
14  EWST    20070228    0.261621
15  EWST    20070330    0.019732
16  EWST    20070430    0.002764
17  EWST    20070531    0.043418
18  EWST    20070629    0.000667
19  EWST    20070731    -0.056667
20  EWST    20070831    0.027562
21  EWST    20070928    -0.032325
22  EWST    20071031    -0.040259
23  EWST    20071130    0.079401
24  EWST    20071231    -0.00393
25  EWST    20080131    -0.006082
26  EWST    20080229    0.021704
27  EWST    20080331    -0.052516
28  EWST    20080430    -0.036698
29  EWST    20080530    0.271628
30  EWST    20080630    -0.010092
31  EWST    20080731    -0.053023
32  EWST    20080829    -0.019724
33  EWST    20080930    -0.137374
34  EWST    20081031    -0.018824
35  EWST    20081128    -0.130121
36  EWST    20081231    0.155989
37  EWST    20090130    0.03414
38  EWST    20090227    0.056222

如何更改此设置,以便将所有日期与行匹配,将所有代码作为列匹配,然后填写相应的回报?

2 个答案:

答案 0 :(得分:0)

如果您的数据被称为DF,请使用:

DF[order(DF$ticker, DF$date), ]

或者,使用data.table包:

library(data.table)
DT <- data.table(DF, key=c("ticker", "date"))

答案 1 :(得分:0)

您可以使用dcast包中的reshape2

library(reshape2)
dcast(dat, date ~ ticker, value.var = "returns")

       date      EWST
1  20060131 -0.016495
2  20060228 -0.010537
3  20060331  0.170394
4  20060428 -0.094631
5  20060531 -0.010452
...