简体   繁体   English

在R中重新格式化数据帧

[英]Reformatting Data Frame in R

I'm trying to reformat a data frame in R that has columns of stock return data according to ticker and date. 我正在尝试重新格式化R中的数据框,该数据框具有根据股票代码和日期显示的股票收益数据列。 Example: 例:

    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

How can I change this so that it matches up all the dates as the rows and all the tickers as the columns and then fills in the appropriate return? 我该如何更改它,使其与所有日期匹配为行,所有股票代码匹配为列,然后填写适当的收益?

if your data is called DF , use: 如果您的数据称为DF ,请使用:

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

Alternatively, using the data.table package: 或者,使用data.table包:

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

You can use dcast from the reshape2 package: 您可以从reshape2包中使用dcast

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
...

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM