关于正则表达式:基于单个单元格内的 % 符号排序 – R | 珊瑚贝

Sorting based on % symbol within a single cell – R


我有一个 data.frame 包含这样的单元格:

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

我想在每个单元格内 sort 使百分比值在右侧,变为:

34 – 10%、15:4 – 15.5%、1n9 – 18%

我已经尝试通过 ‘-‘ 分隔符将每个分隔符拆分并重新粘贴在一起,但是对于较大的 data.frame 是否有更有效的方法?谢谢

  • 如果排序是基于百分比值的存在,最好将其包含在标题中以使其清晰。
  • 向量的每个元素中重新排序的单词可能重复


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

1
2
sub(“(.+%) – (.*)”,”\\\\2 – \\\\1″, df[[1]])
# [1]”34 – 10%”    “15:4 – 15.5%””1n9 – 18%”

这里我们捕获 pattern 参数中的第一个和最后一个元素,然后在 replacement 参数中交换它们。

正则表达式解释由 regex101.com 提供:

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

替换字符串”\\\\2 – \\\\1″首先放置第二个捕获组(\\\\2),然后是文字-,然后是第一个捕获组(\\\\1)。请参阅 help(regex) 了解更多信息。


来源:https://www.codenong.com/43669419/

微信公众号
手机浏览(小程序)

Warning: get_headers(): SSL operation failed with code 1. OpenSSL Error messages: error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed in /mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line 57

Warning: get_headers(): Failed to enable crypto in /mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line 57

Warning: get_headers(https://static.shanhubei.com/qrcode/qrcode_viewid_8658.jpg): failed to open stream: operation failed in /mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line 57
0
分享到:
没有账号? 忘记密码?