将ts对象转换为data.frame,并保留行名和列名

时间:2019-01-05 15:14:03

标签: r dataframe type-conversion time-series data-conversion

我想将ts(即时间序列)R对象转换为data.frame。 ts对象的行和列的名称应保留。

考虑AirPassengers数据集:

data(AirPassengers)

我可以将该ts对象转换为data.frame,如下所示:

AirPassengers <- data.frame(matrix(as.numeric(AirPassengers), ncol = 12, byrow = TRUE))
colnames(AirPassengers) <- c("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec")
rownames(AirPassengers) <- 1949:1960

但是,这似乎太复杂了。令人惊讶的是,谷歌搜索没有显示出更简单的解决方案。

问题:是否有一种简单的解决方案,如何在不丢失名称和行名的情况下将ts对象转换为data.frame?

1 个答案:

答案 0 :(得分:1)

潜在的问题是,print对时间序列对象的.preformat.ts的输出进行了大量处理。如果要将其转换为与打印结果在外观上相似的数据框,则应该这样做:

df <- data.frame(.preformat.ts(datasets::AirPassengers), stringsAsFactors = FALSE)

请注意,这会产生字符(.preformat.ts就是这样工作的),因此请谨慎使用(不确定转换的目的是什么?)。