我希望以一种相当不寻常的方式对我的数据进行排序,但似乎无法对其进行管理。
我的行名如下:
CLSTRU
TBSVOD
TRUCLS
VODTBS
可以看到,前三个字符已经和后三个字符互换了。我想按以下方式对其进行排序:
CLSTRU
TRUCLS
TBSVOD
VODTBS
有没有人有什么建议?
谢谢!
麦克风
也许(猜测你想要两个三元组的“最小值”作为排序标准):
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"
我对r一无所知,但我想知道你是否可以:
将您的行复制到 2 个数组之一 - “array1”和“array2”。为了将一行复制到数组 1,请将前 3 个字符与“array1”中已有的所有条目的后 3 个字符进行比较。如果发现它们是这样的(即,这个“当前”行是“回到前行”),则将该元素复制到数组 2 - 这样,array1 包含“正常方式”行,而 array2 包含“回到前面”的行。
处理完所有行后(如果所有行都有效,array1.length = array2.length = number of rows/2) - 创建最终的数据数组,添加:array1.row1 array2.row1,array1.row2,array2。第2行等
??
我认为简单的 unix sort 命令可以做到这一点,请检查以下命令:
$排序演示
ABCDEF
DEFABC
海荷航
荷兰皇家航空公司
谢谢