我希望以一种相当不寻常的方式对数据进行排序,似乎无法管理它
我的rownames如下:
CLSTRU
TBSVOD
TRUCLS
VODTBS
如您所见,前三个字符已用最后3个字符切换。我想按以下方式对其进行排序:
CLSTRU
TRUCLS
TBSVOD
VODTBS
有人有任何建议吗?
谢谢!
麦克
答案 0 :(得分: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"
答案 1 :(得分:-3)
我对r一无所知,但我想知道你是否可以:
将行复制到2个数组中的一个 - “array1”和“array2”。要将行复制到数组1,请将前3个字符与“array1”中已有的所有条目的最后3个字符进行比较。如果它们被发现(即,这个“当前”行是“返回前排”),则将该元素复制到数组2 - 这样,array1包含“普通方式”行,而array2包含“回到前面“行。
处理完所有行后(如果一切都有效,array1.length = array2.length =行数/ 2) - 创建最终数据数组,添加:array1.row1 array2.row1, array1.row2,array2.row2等
...
答案 2 :(得分:-4)
我认为简单的unix sort命令可以执行此操作,请检查以下命令:
$ sort demo
ABCDEF
DEFABC
HIJKLM
KLMHIJ
由于