R-选择正则表达式
我想选择可以找到表达式“X01”或“X02”的每一行:R-选择正则表达式,r,regex,R,Regex,我想选择可以找到表达式“X01”或“X02”的每一行: dataEx您是否愿意使用stringr包?我同意Jaskeil的观点,我倾向于选择data.table而不是data.frame,但这主要是为了提高执行速度。不确定这是否会成为您申请的一个问题 library(stringr) dataEx <- data.frame(code = c("X01-X043","X034","X024","X015-X036-X03
dataEx您是否愿意使用stringr包?我同意Jaskeil的观点,我倾向于选择data.table而不是data.frame,但这主要是为了提高执行速度。不确定这是否会成为您申请的一个问题
library(stringr)
dataEx <- data.frame(code = c("X01-X043","X034","X024","X015-X036-X033","X012","X015-X042","X019","X036","X022-X043"),res = NA )
dataEx$res <- str_extract(dataEx$code, "((^|-)X01($|-|.))|((^|-)X02($|-|.))")
库(stringr)
dataEx您可以执行以下操作:
a <- regmatches(dataEx$code, gregexpr(paste(pat1, collapse = "|"), dataEx$code))
is.na(a)<-lengths(a)==0
dataEx$res <- unlist(a)
a您可以通过以下方式使用stru extract
:
library(stringr)
dataEx$res <- str_extract(dataEx$code, "X0(1|2)\\d?")
library(stringr)
dataEx <- data.frame(code = c("X01-X043","X034","X024","X015-X036-X033","X012","X015-X042","X019","X036","X022-X043"),res = NA )
dataEx$res <- str_extract(dataEx$code, "((^|-)X01($|-|.))|((^|-)X02($|-|.))")
a <- regmatches(dataEx$code, gregexpr(paste(pat1, collapse = "|"), dataEx$code))
is.na(a)<-lengths(a)==0
dataEx$res <- unlist(a)
library(stringr)
dataEx$res <- str_extract(dataEx$code, "X0(1|2)\\d?")
dataEx
code res
1 X01-X043 X01
2 X034 <NA>
3 X024 X024
4 X015-X036-X033 X015
5 X012 X012
6 X015-X042 X015
7 X019 X019
8 X036 <NA>
9 X022-X043 X022