列数字排序?

时间:2014-07-10 13:21:56

标签: r sorting dataframe

我有一个相当长的数据框,有200多列,如下所示:

RespondentID  Q16_positiv.31    Q16_positiv.68  Q16_positiv.194 ....

有没有办法对数字上升的Q16_positiv.XYZ变量进行排序?我所有的尝试都使用了aplhabetical排序,这确实产生了预期的结果。

1 个答案:

答案 0 :(得分:2)

听起来你会对“gtools”中的mixedsort函数感兴趣。

考虑以下示例数据:

set.seed(1)
x <- paste("Q", sample(5, 20, TRUE), sample(20, 20, TRUE), sep = "_")
x
#  [1] "Q_2_19" "Q_2_5"  "Q_3_14" "Q_5_3"  "Q_2_6"  "Q_5_8"  "Q_5_1" 
#  [8] "Q_4_8"  "Q_4_18" "Q_1_7"  "Q_2_10" "Q_1_12" "Q_4_10" "Q_2_4" 
# [15] "Q_4_17" "Q_3_14" "Q_4_16" "Q_5_3"  "Q_2_15" "Q_4_9" 

以下是sort

的结果
sort(x)
#  [1] "Q_1_12" "Q_1_7"  "Q_2_10" "Q_2_15" "Q_2_19" "Q_2_4"  "Q_2_5" 
#  [8] "Q_2_6"  "Q_3_14" "Q_3_14" "Q_4_10" "Q_4_16" "Q_4_17" "Q_4_18"
# [15] "Q_4_8"  "Q_4_9"  "Q_5_1"  "Q_5_3"  "Q_5_3"  "Q_5_8" 

以下是mixedsort

的结果
library(gtools)
mixedsort(x)
#  [1] "Q_1_7"  "Q_1_12" "Q_2_4"  "Q_2_5"  "Q_2_6"  "Q_2_10" "Q_2_15"
#  [8] "Q_2_19" "Q_3_14" "Q_3_14" "Q_4_8"  "Q_4_9"  "Q_4_10" "Q_4_16"
# [15] "Q_4_17" "Q_4_18" "Q_5_1"  "Q_5_3"  "Q_5_3"  "Q_5_8" 

我希望这足以对您有所帮助 - 否则,请使用可重复的示例更新您的问题。