我有一个数据矩阵,看起来像:

date ticker return

2/1  MSFT   .21

2/1  GOOG   .11

2/1  CSCO   .09

2/2  MSFT   .22

2/2  GOOG   .19

2/2  CSCO   .15

我想把结构转换成:
     MSFT   GOOG  CSCO

2/1  .21    .11   .09

2/2  .22    .19   .15

有没有一种简单的方法可以在Matlab/R中进行这种转换,而不是运行循环来获得它?

最佳答案

您可以使用reshape2库:

library(reshape2)

#sample data
dat <- data.frame(
    date = rep(c("2/1", "2/2"), each = 3)
  , ticker = rep(c("MSFT", "GOOG", "CSCO"), 2)
  , return = runif(6)
)

#Cast the data
> dcast(dat, date ~ ticker, value_var = "return")

  date      CSCO      GOOG       MSFT
1  2/1 0.2555900 0.6212102 0.43078011
2  2/2 0.7092036 0.7013563 0.01225488

09-26 09:26