我想将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?
答案 0 :(得分:1)
潜在的问题是,print
对时间序列对象的.preformat.ts
的输出进行了大量处理。如果要将其转换为与打印结果在外观上相似的数据框,则应该这样做:
df <- data.frame(.preformat.ts(datasets::AirPassengers), stringsAsFactors = FALSE)
请注意,这会产生字符(.preformat.ts
就是这样工作的),因此请谨慎使用(不确定转换的目的是什么?)。