基于单个单元格中的%symbol排序-R

基于单个单元格中的%symbol排序-R,r,regex,sorting,dataframe,R,Regex,Sorting,Dataframe,我有一个data.frame包含如下单元格: df<-as.data.frame(c('10% - 34', '15.5% - 15:4', '18% - 1n9')) df反转元素的正则表达式可能比拆分和重新粘贴更有效 sub("(.+%) - (.*)", "\\2 - \\1", df[[1]]) # [1] "34 - 10%" "15:4 - 15.5%" "1n9 - 18%" 这里我们捕获模式参数中的第一个和最后一个元素,然后在替换参数中交换它们 Regex解释

我有一个
data.frame
包含如下单元格:

df<-as.data.frame(c('10% - 34', '15.5% - 15:4', '18% - 1n9'))

df反转元素的正则表达式可能比拆分和重新粘贴更有效

sub("(.+%) - (.*)", "\\2 - \\1", df[[1]])
# [1] "34 - 10%"     "15:4 - 15.5%" "1n9 - 18%" 
这里我们捕获
模式
参数中的第一个和最后一个元素,然后在
替换
参数中交换它们

Regex解释由以下人员提供:

  • (.+)
    是第一个捕获组<代码>+
匹配任何字符(行终止符除外)
+
是一个量词。它在一次和无限次之间匹配,尽可能多地匹配,根据需要回馈(贪婪)
%
按字面意思匹配字符%(区分大小写)<代码>-按字面意思匹配字符
-
(区分大小写)
  • (.*)
    是第二个捕获组<代码>*匹配任何字符(行终止符除外)
    *
    是一个量词。它在零次和无限次之间匹配,尽可能多地匹配,根据需要回馈(贪婪)

  • 替换字符串
    “\\2-\\1”
    首先放置第二个捕获组(
    \\2
    ),然后放置文字
    -
    ,然后放置第一个捕获组(
    \\1
    )。有关更多信息,请参见
    help(regex)

    如果排序基于百分比值的存在,最好将其包含在标题中以明确说明。可能重复