簡體   English   中英

在R中重新格式化數據幀

[英]Reformatting Data Frame in 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

我該如何更改它,使其與所有日期匹配為行,所有股票代碼匹配為列,然后填寫適當的收益?

如果您的數據稱為DF ,請使用:

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

或者,使用data.table包:

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

您可以從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