首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R顺序函数不给事物排序吗?

R顺序函数不给事物排序吗?
EN

Stack Overflow用户
提问于 2021-09-04 21:47:10
回答 1查看 72关注 0票数 1

我刚刚开始玩一些R。最初的练习是首先打印lynx数据集:

代码语言:javascript
复制
> 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

然后我应该按顺序订购。我很快就找到了阶()函数,它看起来像在做它应该做的事情(正确的答案也表明了这一点)。

所以我就这么做:

代码语言:javascript
复制
> 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。这看起来一点也不清楚。

点菜是干什么的?如果不排序的话?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-04 21:48:39

order返回已排序的位置索引。我们需要使用该索引来重新排序值,并使用[]将其赋值回同一个对象,以保持结构的完整性。

代码语言:javascript
复制
lynx[] <- lynx[order(lynx)]

-output

代码语言:javascript
复制
> 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,然后重新分配

代码语言:javascript
复制
lynx[] <- sort(lynx)

关于这些order位置向量的含义,让我们考虑这里创建的示例。order的第一个位置是70,即在新的有序数据中,应该排序的值将从原始时间序列的第70位开始。

代码语言:javascript
复制
> 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

数据

代码语言:javascript
复制
set.seed(24)
lynx <- ts(sample(80:4000, 113, replace = TRUE), start = c(1821), frequency = 1)
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69059155

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档