【问题标题】:Sorting the column names of a dataframe using alphabetic or number order使用字母或数字顺序对数据框的列名进行排序
【发布时间】:2016-01-20 23:57:29
【问题描述】:

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

列名示例:

variable_A variable_B variacle_C name_A name_B name_C

结果是:

variable_A name_A variable_B name_B  variable_C name_C

【问题讨论】:

  • 在您的示例中,这可能是x[order(substr(x, nchar(x), nchar(x)))]
  • df[order(sub(".*_", "", names(df)))]
  • @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 在order 之前将sub 转换为numeric,即order(as.numeric(sub(...,因为sub 的输出是character。只是为了理解它尝试sort(c("1", "8", "10", "4"))
  • @akrun 就是这样。请如果你们俩都想把它作为答案,请做它,因为它回答了我的问题。

标签: r


【解决方案1】:

您可以使用sub 删除_ 之前(包括)之前的所有内容,然后在指定时使用stringi::stri_order 正确排序列(无论值代表字符串还是数字numeric = TRUE

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

【讨论】:

    猜你喜欢
    • 2021-12-07
    • 1970-01-01
    • 2023-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多