我有一个包含这样的细胞的data.frame
:
df<-as.data.frame(c('10% - 34', '15.5% - 15:4', '18% - 1n9'))
我希望在每个单元格中sort
,以便百分比值在右边,成为:
34 - 10%
,15:4 - 15.5%
,1n9 - 18%
我尝试过用'-'
分隔符将每个分隔符分割并粘贴回一起,但是对于大型data.frame
是否有更有效的方法呢?谢谢
发布于 2017-04-27 15:25:43
我们反转元素的正则表达式可能比拆分和重新粘贴更有效。
sub("(.+%) - (.*)", "\\2 - \\1", df[[1]])
# [1] "34 - 10%" "15:4 - 15.5%" "1n9 - 18%"
在这里,我们捕获pattern
参数中的第一个和最后一个元素,然后在replacement
参数中交换它们。
regex101.com提供的Regex解释
(.+%)
是第一个捕获组;.+
匹配任何字符(行结束符除外);+
是量词。它在一次和无限次之间匹配,尽可能多次返回(贪婪);%
按字面意思匹配字符%(区分大小写);-
匹配字符-
(区分大小写)。(.*)
是第二个捕获组;.*
匹配任何字符(行结束符除外);*
是量词。它匹配之间的零和无限倍,尽可能多的次数,回馈需要(贪婪)替换字符串"\\2 - \\1"
首先放置第二个捕获组(\\2
),然后是文字-
,然后是第一个捕获组(\\1
)。有关更多信息,请参见help(regex)
。
https://stackoverflow.com/questions/43669419
复制相似问题