【发布时间】:2021-06-14 03:42:48
【问题描述】:
有人可以帮助我理解为什么“order”函数没有按预期对 xts 数据框进行排序吗?正如您在下面看到的,由于索引显示已排序,因此 order 函数似乎完成了它的工作。但是,当在 MSFT xts 对象内应用此索引向量时,将保持原始顺序,并且不会发生行顺序的更改。我错过了什么?我意识到应用 str(MSFT) 表明这些值属于“chr”类型,但我认为这无关紧要。
library(quantmod)
getSymbols("MSFT")
sorted_indices <- order(MSFT$MSFT.Adjusted)
sorted_indices
[1] 549 547 548 544 545 546
test <- MSFT[sorted_indices,]
head(test)
MSFT.Open MSFT.High MSFT.Low MSFT.Close MSFT.Volume
2007-01-03 29.91 30.25 29.40 29.86 76935100
2007-01-04 29.70 29.97 29.44 29.81 45774500
2007-01-05 29.63 29.75 29.45 29.64 44607200
2007-01-08 29.65 30.10 29.53 29.93 50220200
2007-01-09 30.00 30.18 29.73 29.96 44636600
2007-01-10 29.80 29.89 29.43 29.66 55017400
MSFT.Adjusted
2007-01-03 21.96213
2007-01-04 21.92535
2007-01-05 21.80031
2007-01-08 22.01361
2007-01-09 22.03568
2007-01-10 21.81502
【问题讨论】:
-
zoo对象的要点是有一个特定顺序的时间索引。zoo对象按该顺序自动存储和打印。如果您想忽略 zoo 的时间顺序命令,我认为您需要转换为常规数据框。另请参阅this question。