如果我有这样的数据框:
dataframe <- data.frame(Date = seq(as.Date("2018/01/01"), by = "day", length.out = 5),
ID1 = c(1, 2, 3, 4, 5),
ID2 = c(6, 7, 8, 9, 10))
> dataframe
Date ID1 ID2
1 2018-01-01 1 6
2 2018-01-02 2 7
3 2018-01-03 3 8
4 2018-01-04 4 9
5 2018-01-05 5 10
将观测值作为数据,将日期作为行名,将ID作为列名将其转换为矩阵的最佳方法是什么?
我认为会有一个转换数据帧并以某些列/行作为col / row名称参数的函数,但我没有发现。
奖金问题:每个ID是否需要一个不同的矩阵?是否需要创建3D阵列或类似的阵列?我该怎么办?
答案 0 :(得分:1)
首先设置行名,然后将其转换为矩阵:
as.matrix(data.frame(dataframe[-1], row.names = dataframe$Date))
另一种可能性是使用zoo或xts对象。这将为数据创建一个矩阵,并为日期定义一个索引属性。生成的对象属于zoo
类,可以通过zoo软件包的功能对其进行操作。
library(zoo)
z <- read.zoo(dataframe)