【问题标题】:Sort columns numerically?按数字对列进行排序?
【发布时间】:2014-08-31 21:30:17
【问题描述】:

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

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

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

【问题讨论】:

  • @DavidArenburg 我认为这是一个非常“愚蠢”的问题,不需要按喇叭的大桌子。另外,“数值升序”的哪一部分是模棱两可的?
  • 这不是模棱两可,而是要了解你的数据结构,以及你想要的输出。

标签: r sorting dataframe


【解决方案1】:

听起来您会对“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" 

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

【讨论】:

    猜你喜欢
    • 2020-09-29
    • 1970-01-01
    • 2013-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多