将 ts 对象转换为 data.frame 并保留行名和列名
Convert ts object to data.frame and keep row- and colnames
我想将 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
但是,这似乎太复杂了。令人惊讶的是,google 搜索没有显示更简单的解决方案。
问题:有没有简单的解决方案如何将 ts 对象转换为 data.frame 而不会丢失 colnames 和 rownames?
潜在的问题是 print
的时间序列对象的输出被 .preformat.ts
大量处理。如果你想把它转换成一个在视觉上与打印结果相似的数据框,应该这样做:
df <- data.frame(.preformat.ts(datasets::AirPassengers), stringsAsFactors = FALSE)
请注意,这会产生字符(因为这就是 .preformat.ts
的工作原理),因此请谨慎使用(不确定转换的目的是什么?)。
我想将 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
但是,这似乎太复杂了。令人惊讶的是,google 搜索没有显示更简单的解决方案。
问题:有没有简单的解决方案如何将 ts 对象转换为 data.frame 而不会丢失 colnames 和 rownames?
潜在的问题是 print
的时间序列对象的输出被 .preformat.ts
大量处理。如果你想把它转换成一个在视觉上与打印结果相似的数据框,应该这样做:
df <- data.frame(.preformat.ts(datasets::AirPassengers), stringsAsFactors = FALSE)
请注意,这会产生字符(因为这就是 .preformat.ts
的工作原理),因此请谨慎使用(不确定转换的目的是什么?)。