我有一个数据帧,其中包含多个时间序列的收益率,存储在各自的列中。
第一列包含日期,随后的列是独立的时间序列,每个都有一个名称。列标题是变量名。
## I have a data frame like this
t <- seq(as.Date('2009-01-01'),by='days',length=10)
X <- rnorm(10,0,1)
Y <- rnorm(10,0,2)
Z <- rnorm(10,0,4)
dat <- data.frame(t,X,Y,Z)
## which appears as
t X Y Z
1 2009-01-01 -1.8763317 -0.1885183 -6.655663
2 2009-01-02 -1.3566227 -2.1851226 -3.863576
3 2009-01-03 -1.3447188 2.4180249 -1.543931
我希望在网格中将每个时间序列作为单独的线条绘制到不同的图表中,并使用变量名标记每个图表。
要使用lattice绘制此图,数据必须以长格式呈现,如下所示:
t symbol price
1 2009-01-01 X -1.8763317
2 2009-01-02 Y -0.1885183
2 2009-01-02 Z -6.655663
什么样的函数调用能够实现这个功能?
R
中的reshape
函数的解决方案:reshape(dat, direction = "long", varying = 2:4, v.names = "price", idvar = "t", timevar = "symbol", times = names(dat)[2:4], new.row.names = 1:30)
- josep maria porrà