Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 按字母和数字排序_R - Fatal编程技术网

R 按字母和数字排序

R 按字母和数字排序,r,R,我有一个DF$vector,看起来像这样: A10 A50 C1 C4 B1 A7 C3 B1 B4 我想通过以下方式订购: A10 A50 A7 B1 B4 B1 C1 C4 C3 我尝试使用gsub: vector[order(gsub("([A-Z]+)([0-9]+)", "\\1", vector), as.numeric(gsub("([A-Z]+)([0-9]+)", "\\2", vector)))] 但它没有返回我想要的。 谢谢您的建议。我们可

我有一个
DF$vector
,看起来像这样:

A10 A50
C1 C4
B1
A7
C3
B1 B4
我想通过以下方式订购:

A10 A50
A7
B1 B4
B1
C1 C4
C3
我尝试使用
gsub

vector[order(gsub("([A-Z]+)([0-9]+)", "\\1", vector), 
             as.numeric(gsub("([A-Z]+)([0-9]+)", "\\2", vector)))]
但它没有返回我想要的。
谢谢您的建议。

我们可以使用
订单
基本R

df1[order(sub("\\d+", "", df1[,1]), as.numeric(sub("\\D+", "", df1[,1])), df1[,2] == ""),]
#  A10 A50
#3  A7    
#5  B1  B4
#2  B1    
#1  C1  C4
#4  C3    
数据
df1在编程语言中,字母被认为在数量上在增加。因此,
A
被认为是小于
B
等。因此,要对上述内容进行排序,只需使用代码:

     df1$r=rank(df1$A10,ties.method = "last")
     df1[order(df1$r),-ncol(df1)]
      A10 A50
   3  A7    
   5  B1  B4
   2  B1    
   1  C1  C4
   4  C3    

@RonakShah我也检查过了。它没有完全返回我想要的订单为我工作
d[mixedorder(d$V1),]
@Jimbou这是我之前的选择,但是正如OP提到的,第二行第二列应该有B4谢谢!但是如果
向量
包含
B1
而不是
B3
,那么
mixedorder
会将它放在
b1b4
之前,这是克服它的一种方法吗?谢谢大家!@Pooh请告诉我们您是否有data.frame或vector。它看起来不像矢量井,我有一个data.frame,但我只想订购一个column@Pooh好吧,那么,请在你的帖子中澄清一下,
我有一个向量,它看起来像是这样的
令人困惑:你可能没有注意到,我是在
B1 B4
之后,而不是之前寻找排序的。。如果这只发生在B1上,或者即使有C1,它也应该在C1和C4之后??这不仅适用于
B1
,而且适用于任何情况,因此对于
C1
,我给出的结果也不符合您的期望?我想我不太明白你的意思,我们会的。请再检查一下我的成绩。我确实编辑了它。问题是,
DF$vector
是数据帧的字符向量,而不是您假设的2列
     df1$r=rank(df1$A10,ties.method = "last")
     df1[order(df1$r),-ncol(df1)]
      A10 A50
   3  A7    
   5  B1  B4
   2  B1    
   1  C1  C4
   4  C3