0

我希望以一种相当不寻常的方式对我的数据进行排序,但似乎无法对其进行管理。
我的行名如下:
CLSTRU
TBSVOD
TRUCLS
VODTBS

可以看到,前三个字符已经和后三个字符互换了。我想按以下方式对其进行排序:
CLSTRU
TRUCLS
TBSVOD
VODTBS

有没有人有什么建议?

谢谢!

麦克风

4

3 回答 3

3

也许(猜测你想要两个三元组的“最小值”作为排序标准):

 dfrm[ order( pmin(substr( rownames(dfrm), 1,3),substr( rownames(dfrm), 4,6) ) ),
        , ]

测试:

dat <- c('CLSTRU',
 'TBSVOD',
 'TRUCLS',
 'VODTBS')

 dat[ order( pmin(substr( dat, 1,3),substr( dat, 4,6) ) )]
#[1] "CLSTRU" "TRUCLS" "TBSVOD" "VODTBS"
于 2013-10-10T10:12:45.573 回答
-3

我对r一无所知,但我想知道你是否可以:

  1. 将您的行复制到 2 个数组之一 - “array1”和“array2”。为了将一行复制到数组 1,请将前 3 个字符与“array1”中已有的所有条目的后 3 个字符进行比较。如果发现它们是这样的(即,这个“当前”行是“回到前行”),则将该元素复制到数组 2 - 这样,array1 包含“正常方式”行,而 array2 包含“回到前面”的行。

  2. 处理完所有行后(如果所有行都有效,array1.length = array2.length = number of rows/2) - 创建最终的数据数组,添加:array1.row1 array2.row1,array1.row2,array2。第2行等

??

于 2013-10-10T10:19:51.853 回答
-4

我认为简单的 unix sort 命令可以做到这一点,请检查以下命令:

$排序演示

ABCDEF

DEFABC

海荷航

荷兰皇家航空公司

谢谢

于 2013-10-10T10:14:55.533 回答