我正在尝试重新格式化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
如何更改此设置,以便将所有日期与行匹配,将所有代码作为列匹配,然后填写相应的回报?
答案 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
...