我刚刚开始玩一些R。最初的练习是首先打印lynx数据集:
> print(lynx)
Time Series:
Start = 1821
End = 1934
Frequency = 1
[1] 269 321 585 871 1475 2821 3928 5943 4950 2577 523 98 184 279 409 2285
[17] 2685 3409 1824 409 151 45 68 213 546 1033 2129 2536 957 361 377 225
[33] 360 731 1638 2725 2871 2119 684 299 236 245 552 1623 3311 6721 4254 687
[49] 255 473 358 784 1594 1676 2251 1426 756 299 201 229 469 736 2042 2811
[65] 4431 2511 389 73 39 49 59 188 377 1292 4031 3495 587 105 153 387
[81] 758 1307 3465 6991 6313 3794 1836 345 382 808 1388 2713 3800 3091 2985 3790
[97] 674 81 80 108 229 399 1132 2432 3574 2935 1537 529 485 662 1000 1590
[113] 2657 3396然后我应该按顺序订购。我很快就找到了阶()函数,它看起来像在做它应该做的事情(正确的答案也表明了这一点)。
所以我就这么做:
> print(order(lynx))
[1] 69 22 70 71 23 68 99 98 12 78 100 21 79 13 72 59 24 32 60 101
[21] 41 42 49 1 14 40 58 2 88 51 33 30 31 73 89 80 67 102 15 20
[41] 61 50 109 11 108 25 43 3 77 110 97 39 48 34 62 57 81 52 90 4
[61] 29 111 26 103 74 82 91 56 5 107 112 53 44 35 54 19 87 63 38 27
[81] 55 16 104 66 28 10 113 17 92 36 64 6 37 106 95 94 45 114 18 83
[101] 76 105 96 86 93 7 75 47 65 9 8 85 46 84这在重新排列数字的过程中起了作用,但是它看起来并不是很有条理。如果我们从一开始就采取它,它是69,然后下降到22,然后上升到70。这看起来一点也不清楚。
点菜是干什么的?如果不排序的话?
发布于 2021-09-04 21:48:39
order返回已排序的位置索引。我们需要使用该索引来重新排序值,并使用[]将其赋值回同一个对象,以保持结构的完整性。
lynx[] <- lynx[order(lynx)]-output
> lynx
Time Series:
Start = 1821
End = 1933
Frequency = 1
[1] 80 91 97 99 125 140 157 217 265 358 366 387 389 413 417 450 490 519 527 539 599 624 715 723 775 905 905 911
[29] 927 950 976 983 985 996 1087 1142 1152 1161 1175 1300 1318 1322 1330 1470 1486 1555 1557 1588 1657 1666 1666 1674 1712 1719 1743 1775
[57] 1839 1942 1989 1990 1997 2006 2028 2052 2084 2140 2153 2163 2197 2234 2263 2322 2404 2502 2519 2530 2534 2545 2548 2585 2804 2857 2864 2866
[85] 2870 2941 2949 2976 3058 3129 3136 3139 3154 3175 3192 3197 3201 3224 3294 3438 3452 3463 3504 3556 3623 3647 3661 3712 3770 3817 3870 3896
[113] 3922也可以使用sort,然后重新分配
lynx[] <- sort(lynx)关于这些order位置向量的含义,让我们考虑这里创建的示例。order的第一个位置是70,即在新的有序数据中,应该排序的值将从原始时间序列的第70位开始。
> order(lynx)
[1] 70 26 35 38 42 19 103 84 111 75 109 74 10 63 29 112 94 85 80 31 15 49 39 88 17 46 101 69 24 98 54 20 8 27 113 56
[37] 68 100 3 108 4 72 47 73 93 59 43 34 86 50 104 105 36 51 110 92 78 53 62 16 102 81 7 77 65 21 40 87 44 41 96 76
[73] 25 83 28 2 95 5 23 99 37 11 57 64 1 45 52 18 6 91 30 13 97 106 67 55 58 14 60 32 48 9 22 82 107 90 89 71
[109] 33 66 79 12 61
> lynx[70] # value corresponds to 70th position is 80
[1] 80数据
set.seed(24)
lynx <- ts(sample(80:4000, 113, replace = TRUE), start = c(1821), frequency = 1)https://stackoverflow.com/questions/69059155
复制相似问题