2016-01-20 67 views
1

如何根据最后一个字母对使用alphbetic或数字顺序的数据框的列进行排序?列名的使用字母或数字顺序排列数据帧的列名称

例子:

variable_A variable_B variacle_C name_A name_B name_C 

,其结果是:

variable_A name_A variable_B name_B variable_C name_C 
+1

在你的例子中,这可能是'x [order(substr(x,nchar(x),nchar(x)))]''。 – lukeA

+1

或'df [order(sub(“。* _”,“”,names(df)))]' –

+2

@DavidArenburg这是答案,请把它作为答案,如果你想。你知道我是否使用像'variable_1 variable_8 variacle_10 name_1 name_8 name_10'这样的数字吗?我接受这个:'variable_1 name_1 variable_10 name_10 variable_8 name_8'可能可以接受像我们这样的命令'variable_1 name_1 variable_8 name_8 variable_10 name_10' – Keri

回答

0

之前还是可以使用sub删除一切(包括)的_,然后正确排序的列(不管每当数值代表字符串或数字)使用stringi::stri_order,同时指定numeric = TRUE

df[stringi::stri_order(sub(".*_", "", names(df)), numeric = TRUE)] 
+1

令人惊叹!你呢! – Keri