【问题标题】:How do you re-arrange vector order in R?你如何在 R 中重新排列向量顺序?
【发布时间】:2011-02-05 12:37:04
【问题描述】:

我在 xts R 对象中有三个向量。称它们为 V1、V2、V3。合并后,它们从左到右的顺序是V2、V3、V1。如何重新排列它们,使它们(从左到右)读取为 V1、V2、V3?

【问题讨论】:

    标签: r xts


    【解决方案1】:

    您可以只引用列并重新分配它们:

     x <- x[,c(2,3,1)]
    

    这是一个工作示例:

    > data(sample_matrix)
    > x <- head(as.xts(sample_matrix, descr='my new xts object'))[,c(1,2,3)]
    > x
                   Open     High      Low
    2007-01-02 50.03978 50.11778 49.95041
    2007-01-03 50.23050 50.42188 50.23050
    2007-01-04 50.42096 50.42096 50.26414
    2007-01-05 50.37347 50.37347 50.22103
    2007-01-06 50.24433 50.24433 50.11121
    2007-01-07 50.13211 50.21561 49.99185
    > x <- x[,c(2,3,1)]
    > x
                   High      Low     Open
    2007-01-02 50.11778 49.95041 50.03978
    2007-01-03 50.42188 50.23050 50.23050
    2007-01-04 50.42096 50.26414 50.42096
    2007-01-05 50.37347 50.22103 50.37347
    2007-01-06 50.24433 50.11121 50.24433
    2007-01-07 50.21561 49.99185 50.13211
    

    【讨论】:

    • 非常感谢。我会记住这个符号以备将来使用。我做了一个不太优雅的解决方法。我的最终数据框是三个合并向量的结果,所以我只是重新排列了合并它们的顺序。原始:合并(V2,V1,V2)解决方法:合并(V1,V2,V3)
    【解决方案2】:

    值得注意的是,虽然您能够通过名称引用列来生成新的对象和列,但是

    xts.object$V1plusV2 <- xts.object[, "V1"] + xts.object[, V2"] ,
    

    您不能通过名称对列重新排序。以下是不允许的

    xts.reordered <- xts.object[, c("V3, V2, V1")] .
    

    相反,正如 Shane 指出的那样,您需要按编号引用列。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-02-22
      • 2011-09-26
      • 2016-08-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-27
      • 2016-12-28
      相关资源
      最近更新 更多