在 R 中将 xts/zoo 对象转换为 data.frame
Convert xts/zoo object to data.frame in R
我有一个名为 NKLA
的数据对象,如下所示:
> class(NKLA)
[1] "xts" "zoo"
> head(NKLA)
NKLA.Open NKLA.High NKLA.Low NKLA.Close NKLA.Volume NKLA.Adjusted
2018-06-11 9.57 9.58 9.57 9.58 402600 9.58
2018-06-12 9.56 9.56 9.56 9.56 300000 9.56
2018-06-13 9.57 9.58 9.56 9.57 179100 9.57
2018-06-14 9.57 9.57 9.57 9.57 0 9.57
2018-06-15 9.57 9.57 9.57 9.57 0 9.57
2018-06-18 9.54 9.58 9.54 9.58 300 9.58
但是当我尝试将其转换为 data.frame 时
- 这是建议的here:
data.frame(date=index(NKLA), coredata(NKLA))
- 或者这个,建议here:
as.data.table(NKLA)
- 或者这个,建议here:
as.data.frame.matrix(NKLA)
- 但我也发现了这个:
as.data.frame.table(NKLA)
- 还有这个:
as.data.table(NKLA)
- 还有这个:
as.data.frame(NKLA)
我每次都得到一个 [1] "xts" "zoo"
到查询 class(NKLA)
。
我的问题:
- 如何将
xts
/zoo
对象转换为 data.frame
对象?
感谢任何帮助。
使用的系统:
- R版本:4.1.1 (2021-08-10)
- RStudio 版本:1.4.1717
- OS: macOS Catalina 版本 10.15.7
我们可以使用fortify.zoo
library(zoo)
df1 <- fortify.zoo(NKLA)
-输出
> str(df1)
'data.frame': 6 obs. of 7 variables:
$ Index : POSIXct, format: "2018-06-11" "2018-06-12" "2018-06-13" "2018-06-14" ...
$ NKLA.Open : num 9.57 9.56 9.57 9.57 9.57 9.54
$ NKLA.High : num 9.58 9.56 9.58 9.57 9.57 9.58
$ NKLA.Low : num 9.57 9.56 9.56 9.57 9.57 9.54
$ NKLA.Close : num 9.58 9.56 9.57 9.57 9.57 9.58
$ NKLA.Volume : num 402600 300000 179100 0 0 ...
$ NKLA.Adjusted: num 9.58 9.56 9.57 9.57 9.57 9.58
数据
NKLA <- structure(c(9.57, 9.56, 9.57, 9.57, 9.57, 9.54, 9.58, 9.56, 9.58,
9.57, 9.57, 9.58, 9.57, 9.56, 9.56, 9.57, 9.57, 9.54, 9.58, 9.56,
9.57, 9.57, 9.57, 9.58, 402600, 3e+05, 179100, 0, 0, 300, 9.58,
9.56, 9.57, 9.57, 9.57, 9.58), .Dim = c(6L, 6L), .Dimnames = list(
NULL, c("NKLA.Open", "NKLA.High", "NKLA.Low", "NKLA.Close",
"NKLA.Volume", "NKLA.Adjusted")), index = structure(c(1528689600,
1528776000, 1528862400, 1528948800, 1529035200, 1529294400), tzone = "", tclass = c("POSIXct",
"POSIXt")), class = c("xts", "zoo"))
我有一个名为 NKLA
的数据对象,如下所示:
> class(NKLA)
[1] "xts" "zoo"
> head(NKLA)
NKLA.Open NKLA.High NKLA.Low NKLA.Close NKLA.Volume NKLA.Adjusted
2018-06-11 9.57 9.58 9.57 9.58 402600 9.58
2018-06-12 9.56 9.56 9.56 9.56 300000 9.56
2018-06-13 9.57 9.58 9.56 9.57 179100 9.57
2018-06-14 9.57 9.57 9.57 9.57 0 9.57
2018-06-15 9.57 9.57 9.57 9.57 0 9.57
2018-06-18 9.54 9.58 9.54 9.58 300 9.58
但是当我尝试将其转换为 data.frame 时
- 这是建议的here:
data.frame(date=index(NKLA), coredata(NKLA))
- 或者这个,建议here:
as.data.table(NKLA)
- 或者这个,建议here:
as.data.frame.matrix(NKLA)
- 但我也发现了这个:
as.data.frame.table(NKLA)
- 还有这个:
as.data.table(NKLA)
- 还有这个:
as.data.frame(NKLA)
我每次都得到一个 [1] "xts" "zoo"
到查询 class(NKLA)
。
我的问题:
- 如何将
xts
/zoo
对象转换为data.frame
对象?
感谢任何帮助。
使用的系统:
- R版本:4.1.1 (2021-08-10)
- RStudio 版本:1.4.1717
- OS: macOS Catalina 版本 10.15.7
我们可以使用fortify.zoo
library(zoo)
df1 <- fortify.zoo(NKLA)
-输出
> str(df1)
'data.frame': 6 obs. of 7 variables:
$ Index : POSIXct, format: "2018-06-11" "2018-06-12" "2018-06-13" "2018-06-14" ...
$ NKLA.Open : num 9.57 9.56 9.57 9.57 9.57 9.54
$ NKLA.High : num 9.58 9.56 9.58 9.57 9.57 9.58
$ NKLA.Low : num 9.57 9.56 9.56 9.57 9.57 9.54
$ NKLA.Close : num 9.58 9.56 9.57 9.57 9.57 9.58
$ NKLA.Volume : num 402600 300000 179100 0 0 ...
$ NKLA.Adjusted: num 9.58 9.56 9.57 9.57 9.57 9.58
数据
NKLA <- structure(c(9.57, 9.56, 9.57, 9.57, 9.57, 9.54, 9.58, 9.56, 9.58,
9.57, 9.57, 9.58, 9.57, 9.56, 9.56, 9.57, 9.57, 9.54, 9.58, 9.56,
9.57, 9.57, 9.57, 9.58, 402600, 3e+05, 179100, 0, 0, 300, 9.58,
9.56, 9.57, 9.57, 9.57, 9.58), .Dim = c(6L, 6L), .Dimnames = list(
NULL, c("NKLA.Open", "NKLA.High", "NKLA.Low", "NKLA.Close",
"NKLA.Volume", "NKLA.Adjusted")), index = structure(c(1528689600,
1528776000, 1528862400, 1528948800, 1529035200, 1529294400), tzone = "", tclass = c("POSIXct",
"POSIXt")), class = c("xts", "zoo"))