R-更改行顺序并保持列对一致

时间:2018-07-18 19:44:57

标签: r sorting rows

我有一个数据框架,其中包含一堆行和列,我一直在寻找某个单词在行中的位置。我使用了代码

 which(df== "cars", arr.ind = TRUE

它给了我这个:

[1,]   4   1
[2,]  10   1
[3,]  27   1
[4,]  30   1
[5,]  31   1
[6,]  34   1
[7,]  36   1
[8,]  37   1
[9,]  45   1
[10,]  46   1
[11,]  47   1
[12,]  52   1
[13,]  71   1
[14,]  78   1
[15,]  96   1
[16,]  99   1
[17,] 106   1
[18,] 114   1
[19,] 123   1
[20,] 127   1
[21,] 142   1
 [22,] 170   1
 [23,] 191   1
 [24,] 201   1
 [25,] 210   1
 [26,] 228   1
 [27,] 249   1
 [28,] 273   1
 [29,] 278   1
 [30,] 295   1
 [31,] 302   1
 [32,] 306   1
 [33,] 309   1
 [34,] 328   1
 [35,] 335   1
 [36,] 340   1
 [37,] 341   1
 [38,] 352   1
 [39,] 368   1
 [40,] 370   1
 [41,] 372   1
 [42,] 373   1
 [43,] 378   1
 [44,] 383   1
 [45,] 384   1
 [46,] 385   1
 [47,] 386   1
 [48,] 387   1
 [49,] 390   1
 [50,]   1   2
 [51,]   2   2
 [52,]   6   2
 [53,]   7   2
 [54,]   8   2
 [55,]  11   2
 [56,]  12   2
 [57,]  22   2
 [58,]  29   2
 [59,]  39   2
 [60,]  40   2
 [61,]  41   2
 [62,]  44   2
 [63,]  53   2
 [64,]  61   2
 [65,]  62   2
 [66,]  63   2
 [67,]  67   2
 [68,]  73   2
 [69,]  75   2
 [70,]  77   2
 [71,]  82   2
 [72,]  89   2
 [73,]  91   2
 [74,]  94   2
 [75,] 102   2
 [76,] 104   2
 [77,] 105   2
 [78,] 112   2
 [79,] 115   2
 [80,] 116   2
 [81,] 117   2
 [82,] 120   2
 [83,] 121   2
 [84,] 128   2
 [85,] 133   2
 [86,] 134   2
 [87,] 143   2
 [88,] 144   2
 [89,] 148   2
 [90,] 150   2
 [91,] 158   2
 [92,] 168   2
 [93,] 179   2
 [94,] 183   2
 [95,] 192   2
 [96,] 193   2
 [97,] 196   2
 [98,] 207   2
 [99,] 209   2
[100,] 217   2
[101,] 221   2
[102,] 240   2
[103,] 256   2
[104,] 262   2
[105,] 288   2
[106,] 298   2
[107,] 303   2
[108,] 313   2
[109,] 317   2
[110,] 324   2
[111,] 326   2
[112,] 327   2
[113,] 338   2
[114,] 346   2
[115,] 353   2
[116,] 355   2
[117,] 356   2
[118,] 359   2
[119,] 360   2
[120,] 361   2
[121,] 364   2
[122,] 365   2
[123,] 381   2
[124,] 382   2
[125,]   9   3
[126,]  18   3
[127,]  28   3
[128,]  32   3
[129,]  68   3
[130,] 111   3
[131,] 124   3
[132,] 149   3
[133,] 155   3
[134,] 167   3
[135,] 182   3
[136,] 184   3
[137,] 189   3
[138,] 199   3
[139,] 200   3
[140,] 214   3
[141,] 218   3
[142,] 220   3
[143,] 226   3
[144,] 227   3
[145,] 235   3
[146,] 239   3
[147,] 251   3
[148,] 252   3
[149,] 261   3
[150,] 263   3

我想知道如何使行以升序排列,并保持列号与应该匹配的行匹配。

1 个答案:

答案 0 :(得分:0)

我看不到您的示例数据,所以不确定您的列名是什么。

假设我们有两列cars$X1cars$X2

生成一个数据框进行测试,值范围为0-100和1000行。

cars <- data.frame(replicate(2,sample(0:100,1000,rep=TRUE)))

给予

      X1  X2
1     58  23
2     54  51
3     24  46
4     50  19
5     65  93
6     84  24
7     12   5
8     57  78
9     71  16
10    63  99
...

我们可以订购

cars[order(cars$X1, cars$X2),]

      X1  X2
300    0   1
54     0   6
18     0   8
575    0  18
207    0  34
949    0  45
208    0  53
824    0  54
505    0  56
636    0  56
...

您可以按优先级顺序排列一排或多排。而且,如果您想使用负-

降序开始列
cars[order(-cars$X2),]

      X1  X2
138   94 100
161   26 100
177   66 100
204   88 100
426   30 100
10    63  99
108   18  99
123   34  99
353    2  99
449   33  99
792   85  99
...