gpt4 book ai didi

r - 为什么我不能直接绘制 xts 的箱线图?

转载 作者:行者123 更新时间:2023-12-02 03:48:38 25 4
gpt4 key购买 nike

> x <- data.frame(a = rnorm(10), b = rnorm(10), c = rnorm(10))
> x
a b c
1 -1.09651022 -0.7416278 0.209405373
2 1.53644398 -0.9463432 0.374955227
3 1.71132675 -0.3828052 2.024143398
4 -1.10622882 -0.3599187 -0.808780103
5 -0.49616562 0.7061180 0.644142118
6 -1.75452442 0.3890812 -0.623815889
7 0.06315648 0.5103820 -1.501873998
8 0.64856129 -1.0973679 1.432024595
9 -0.62828873 -0.3159317 0.183674189
10 -0.82657934 1.6376569 -0.003601196
> rownames(x) <- as.Date(Sys.Date() - 9:0)
> x
a b c
2013-06-07 -1.09651022 -0.7416278 0.209405373
2013-06-08 1.53644398 -0.9463432 0.374955227
2013-06-09 1.71132675 -0.3828052 2.024143398
2013-06-10 -1.10622882 -0.3599187 -0.808780103
2013-06-11 -0.49616562 0.7061180 0.644142118
2013-06-12 -1.75452442 0.3890812 -0.623815889
2013-06-13 0.06315648 0.5103820 -1.501873998
2013-06-14 0.64856129 -1.0973679 1.432024595
2013-06-15 -0.62828873 -0.3159317 0.183674189
2013-06-16 -0.82657934 1.6376569 -0.003601196
> class(x)
[1] "data.frame"
> boxplot(x)

enter image description here

> xx <- as.xts(x, order.by = as.Date(rownames(x)))
> xx
a b c
2013-06-07 -1.09651022 -0.7416278 0.209405373
2013-06-08 1.53644398 -0.9463432 0.374955227
2013-06-09 1.71132675 -0.3828052 2.024143398
2013-06-10 -1.10622882 -0.3599187 -0.808780103
2013-06-11 -0.49616562 0.7061180 0.644142118
2013-06-12 -1.75452442 0.3890812 -0.623815889
2013-06-13 0.06315648 0.5103820 -1.501873998
2013-06-14 0.64856129 -1.0973679 1.432024595
2013-06-15 -0.62828873 -0.3159317 0.183674189
2013-06-16 -0.82657934 1.6376569 -0.003601196
> class(xx)
[1] "xts" "zoo"
> boxplot(xx)
Error in try.xts(c(2.12199579096527e-314, 2.12199579096527e-314, 0, 2.12199579096527e-314, :
Error in xts(coredata(x), order.by = index(x), .CLASS = "xts", ...) : order.by requires an appropriate time-based object
>

当然...

> boxplot(as.matrix(xx), col = "red")

enter image description here

不是一个大问题,但我不想每次都强制我的 xts,或者更一般地说,我想知道这里发生了什么,以防万一这可能会发现其他问题。

最佳答案

xts 对象是一个矩阵加一个索引,因此您不能只将该对象传递给 boxplot()。如果您查看 str(xx):

# An ‘xts’ object from 2013-06-07 to 2013-06-16 containing:
# Data: num [1:10, 1:3] 0.321 -0.462 1.715 0.575 0.83 ...
# - attr(*, "dimnames")=List of 2
# ..$ : NULL
# ..$ : chr [1:3] "a" "b" "c"
# Indexed by objects of class: [Date] TZ:
# xts Attributes:
# NULL

您可以通过coredata()访问矩阵:

coredata(xx)
# a b c
# [1,] 0.32120813 -0.07370657 -0.601288169
# [2,] -0.46154742 -1.09475940 3.028664653
# [3,] 1.71515544 -0.31000454 -0.009281175
# [4,] 0.57482616 -0.06260991 1.198034802
# [5,] 0.83015688 -2.49614565 -1.689812377
# [6,] 0.01748081 -0.55332675 2.391426111
# [7,] 0.69852800 -0.10337251 -0.267939285
# [8,] 0.75139113 -0.17427970 -0.561434122
# [9,] -0.68942598 0.18685817 -1.508917140
# [10,] -0.76381007 -2.44387628 0.290524821

您可以直接使用它,但是您可以使用矩阵:

boxplot(coredata(xx))

enter image description here

如果你想使用xts对象的索引,你只需使用index():

index(xx)
# [1] "2013-06-07" "2013-06-08" "2013-06-09" "2013-06-10" "2013-06-11" "2013-06-12" "2013-06-13" "2013-06-14" "2013-06-15"
# [10] "2013-06-16"

关于r - 为什么我不能直接绘制 xts 的箱线图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17132630/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com