r - R订单功能不订购东西?
问题描述
我刚开始玩一些 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
然后我应该以递增的顺序订购它们。我很快找到了order() 函数 ,它看起来像它应该做的那样(正确的答案也表明了这一点)。
所以我这样做:
> 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。它似乎根本没有排序。
订单有什么作用?如果不排序?
解决方案
返回排序的order
位置索引。我们需要使用该索引来重新排序值并分配回同一个对象[]
以保持结构完整
lynx[] <- lynx[order(lynx)]
-输出
> 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)
推荐阅读
- java - 我需要在 img 标签中控制视频标签 html5
- php - 如何从谷歌云存储中获取图像并使用 Laravel/PHP 在标签中显示它们
- android - 如何使用具有受限 API 密钥的 Google-Directions-Android 库
- jquery - 如何获取数据表中仅双精度值的总和
- ios - AVSystemController_SystemVolumeDidChangeNotification 第一次没有给回调
- python-3.x - 如何从 python 列表中提取相同类型的对象并将它们附加到新列表中?
- php - phpexcel 和 csv 使用 CI zip 库保存到 zip
- javascript - 如果可用,如何创建角度服务以从本地存储中获取数据,否则调用 api 方法
- android - Android Places Picker 已弃用,显示地图选择的替代方式
- javascript - 从对象数组中打印具有相同值的对象