如何解决StringsR-捕获正确的数字
我正在尝试基于R执行字符串过滤。 我有多个层次结构,需要将它们分组在一起
我准备了一个例子:
library(stringr)
library(tidyverse)
numbers <- tibble(LEVEL = c('0.1','0.1.1','0.1.2','0.11','0.12','0.11.1','0.12.1','0.12.2'))
# Return also different values - first shall only contained: 0.1,0.1.1,0.1.2
numbers %>%
filter(grepl("^0.1.?",LEVEL))
# Second shall only contained: 0.11,0.11.1
# Third shall only contained: 0.12,0.12.1,0.12.2
我在grepl中使用的字符串模式还不够。
解决方法
您说得对,您提供的正则表达式模式不足以根据需要提取数字。
下面的代码可能就是你要找的。p>
numbers %>%
filter(grepl("^[0]{1}\\.[1]{1}$|^[0]{1}\\.[1]{1}\\.",LEVEL))
# A tibble: 3 x 1
LEVEL
<chr>
1 0.1
2 0.1.1
3 0.1.2
接下来我们只需要 0.11,0.11.1
,即第一个后面的数字有两个 1,然后可能跟有另一个点。我们修改了上面的代码以适应这种变化。
numbers %>%
filter(grepl("^[0]{1}\\.(11){1}$|^[0]{1}\\.(11){1}\\.",LEVEL))
在这里,我们将想要隔离的数字 11
放入一个只发生一次 {1}
的组中。类似地,我们可以写
numbers %>%
filter(grepl("^[0]{1}\\.(12){1}$|^[0]{1}\\.(12){1}\\.",LEVEL))
# A tibble: 3 x 1
LEVEL
<chr>
1 0.12
2 0.12.1
3 0.12.2
获取模式为 12
的那些。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。