r - 尝试通过“order”函数对 R xts 对象进行排序
问题描述
有人可以帮助我理解为什么“订单”功能没有按预期对 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 对象的顺序,并且由于 xts 对象是 zoo 对象,因此它也适用于 xts。Zoo 中的 oo 代表有序观察。这样的对象总是按其时间索引的顺序存储和显示。
您可以像这样从 xts 对象以各种方式创建矩阵或数据框,在这种情况下,您可以执行这些对象允许的任何操作。
as.data.frame(MSFT) # data frame with times as row names
coredata(zoo(MSFT)) # matrix with times as row names
data.matrix(MSFT) # matrix with times as row names
fortify.zoo(MSFT) # data frame with times in column 1
coredata(MSFT) # matrix. No times.
或者这将创建一个动物园对象,其时间为 1, 2, 3, ... 按调整列的顺序。行名称将是关联的日期。
z <- zoo(MSFT, order(order(Ad(MSFT))))
View(coredata(z))
head(coredata(z))
## MSFT.Open MSFT.High MSFT.Low MSFT.Close MSFT.Volume MSFT.Adjusted
## 2009-03-09 15.20 15.74 15.10 15.15 66479100 11.58155
## 2009-03-05 15.86 15.88 15.27 15.27 89708500 11.67328
## 2009-03-06 15.35 15.62 14.87 15.28 92821400 11.68093
## 2009-03-02 15.96 16.25 15.72 15.79 80602100 12.07080
## 2009-03-03 16.03 16.24 15.64 15.88 80476600 12.13960
## 2009-03-04 16.12 16.40 15.89 16.12 69285100 12.32307
推荐阅读
- azure-log-analytics - 在一个 Azure 日志查询中使用不同的时间段
- excel - 用于添加工作表的 Excel VBA 循环
- python - DataFrame对象在sql中不可调用
- bash - 如何使用 bash 在 HDFS 中的一行上列出带有元数据的文件?
- node.js - 配额组“AnalyticsDefaultGroup”超出配额并限制“每个用户每 100 秒的请求数”
- java - 如何在 Spring Boot 中使用来自 rest 模板的 Json 并将每个元素映射到另一个 Json
- java - 你如何使用keylistener?
- php - pg_close 必须等待查询结束
- python-3.x - 您如何维护 CSV 列中的空白格式以使用 Selenium send_keys 表示?
- sql - SQL。从表中删除数据,但保持关系