将矩阵转换为xts对象

时间:2016-12-18 06:45:19

标签: r xts

我是R的新手,需要使用library(caret) data("cars") carSubset <- subset(cars) head(carSubset) # I want to convert the columns from of carSubset with following vector names types <- c("convertible","coupe", "hatchback", "sedan", "wagon") head(carSubset[,types]) carSubset[,types] # into 1 column named Type, with the corresponding column name carSubset$Type <- NULL newSubset <- c() newSubset <- apply(carSubset[,types], 1, function(obs){ hit_index <- which(obs == 1) newSubset <- types[hit_index] }) newSubset carSubset$Type <- cbind(Type = newSubset) head(carSubset[, !(names(carSubset) %in% types)]) 包中的getnfac函数。并且似乎该函数仅将PANICr对象作为其第一个参数。但是,在我读完一些内容后,我仍然不了解xts对象是什么。有人可以告诉我如何将xts转换为matrix对象吗?

下面我使用xts矩阵作为第一个参数。因此,我只需要将return转换为return对象。

xts

2 个答案:

答案 0 :(得分:3)

xts是一个可扩展的时间序列对象,实际上是一个常规的ts对象(或更正确的zoo对象),并添加了一些位。
名称的“可扩展”部分指的是如何添加自己选择的属性。

虽然matrix可以很容易地转换为多变量时间序列

m <- matrix(1:16, 4)
m.ts <- ts(m)
index(m.ts)

xts要求其索引(描述每个样本在何时采用的向量)采用日期或时间格式

library(xts)
m <- matrix(1:16, 4)
d <- as.Date(1:nrow(m))
m.xts <- xts(m, order.by=d)
index(m.xts)

如果您的数据以均匀间隔的间隔进行采样,则上面的虚拟索引可能正常。如果没有,您将需要提供与采样时间相对应的向量。

答案 1 :(得分:0)

在我看来,getnfac()函数的第一个参数应该是包含数据的矩阵。

除上述答案外, 您可以使用coredata()关于xts对象转换矩阵格式。