【问题标题】:Sorting a dataframe by substring of columns values按列值的子字符串对数据框进行排序
【发布时间】:2018-02-28 12:24:48
【问题描述】:

一直试图找到这个问题的答案,但一直没能找到。假设我有数据框,

DF <- data.frame (x=c("2,A","1,A","1,C", "1,B"), y = c(1,2,2,1))

产生一个包含两列的数据框,第一列有一个数字和一个字母。 如何根据每行的数字部分对 DF 进行排序?然后,将仅包含该字母的另一列添加到其中。目标是获得,

    x y z
1 1,A 2 A
2 2,A 1 A
3 1,B 1 B
4 1,C 2 C

干杯

【问题讨论】:

    标签: r regex sorting


    【解决方案1】:

    使用gsub依次替换所有数字或逗号("(\\d+|,)")和所有非数字("\\D+"),然后使用orderDF进行排序。

    DF = DF[order(as.character(gsub("(\\d+|,)", "", DF$x)), as.numeric(gsub("\\D+", "", DF$x))),]
    DF$z = gsub("(\\d+|,)", "", DF$x)
    DF
    #    x y z
    #2 1,A 2 A
    #1 2,A 1 A
    #4 1,B 1 B
    #3 1,C 2 C
    

    【讨论】:

    • 太棒了。感谢您的回答和处理数字和字符串的一般提示! :)
    猜你喜欢
    • 2021-11-04
    • 2021-10-07
    • 1970-01-01
    • 1970-01-01
    • 2012-10-14
    • 2021-10-29
    • 1970-01-01
    • 2022-11-12
    • 2014-05-08
    相关资源
    最近更新 更多