我有一个数据矩阵,看起来像:
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