我有一个代码列表,其中包含一个字母后跟两位数字的结构,我想提取以某个字母开头并包含某个范围内的数字的代码。让我们说我有这样的代码:
A01
A03
A06
A12
A99
B01
C09
我想提取A[01-12]
所以我最终得到了4个代码。我如何在R中做到这一点?我四处寻找这个问题的答案,但我找不到任何相关的东西。谢谢你的帮助。
答案 0 :(得分:1)
以下是一个快速示例,说明如何将标识符拆分为两列进行过滤。
library(tidyverse)
df <- data.frame(Code=c("A01",
"A03",
"A06",
"A12",
"A99",
"B01",
"C09"))
df <- df %>%
mutate(Code1 = substr(Code,1,1)) %>%
mutate(Code2= as.numeric(substr(Code,2,3)))
df %>%
filter(Code1=="A" & Code2<=12)
它具有灵活的过滤功能,您可以根据需要在过滤后删除列。
答案 1 :(得分:1)
另一种方式可能是:
string <- c("A01", "A03", "A06", "A12", "A99", "B01", "C09")
string[grepl("(?<=A)[0-1](?<!1)[1-9]|(?<=A)[0-1](?<=1)[1-2]", string, perl = TRUE)]
[1] "A01" "A03" "A06" "A12"