【问题标题】:Sorting a zoo object by value按值对动物园对象进行排序
【发布时间】:2014-01-13 21:14:39
【问题描述】:

我有一个动物园时间序列对象。如何在保留日期的同时按值对其进行排序?

如果这是我的系列:

2013-10-02 2013-10-03 2013-10-04 2013-10-07 2013-10-08 2013-10-09 
-0.02      0.00       0.00       0.04       0.00       0.02

结果应该是:

2013-10-02 2013-10-03 2013-10-04 2013-10-08 2013-10-09 2013-10-07
-0.02      0          0          0          0.02       0.04

普通sort 按日期(不是值)对动物园对象进行排序。 zoo 对象(日期,1 个值系列)具有暗淡的 NULL,因此无法指定我要按第二列排序。

【问题讨论】:

  • 除了索引之外,您不能对动物园对象进行排序。有序索引是类的基本设计/目的。您还将索引混淆为对象的列。这是一个属性,而不是列。我建议你阅读the package vignette

标签: r sorting zoo


【解决方案1】:

在数据框中使用您的数据并转换为"zoo" 对象:

df <- data.frame(Dates = as.Date(c("2013-10-02", "2013-10-03", "2013-10-04",
                                   "2013-10-07", "2013-10-08", "2013-10-09")),
                 Values = c(-0.02, 0.00, 0.00, 0.04, 0.00, 0.02))
library("zoo")
zdf <- zoo(df$Values, df$Dates)

虽然@Joshua 是正确的,但您始终可以转换回数据框表示并对其进行排序,您只需要在整个过程中处理日期的保存即可。例如:

df2 <- as.data.frame(zdf)
df2 <- transform(df2, Dates = as.Date(rownames(df2)))

现在排序df2

df2[order(df2$zdf), ]

R> df2[order(df2$zdf), ]
             zdf      Dates
2013-10-02 -0.02 2013-10-02
2013-10-03  0.00 2013-10-03
2013-10-04  0.00 2013-10-04
2013-10-08  0.00 2013-10-08
2013-10-09  0.02 2013-10-09
2013-10-07  0.04 2013-10-07

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-16
    • 2012-12-24
    • 2011-12-14
    • 2021-09-16
    • 2013-02-12
    • 2023-04-03
    • 1970-01-01
    相关资源
    最近更新 更多