grepl函数-组合开始字符串和结束字符串
在过去的两个小时里,我一直在努力想办法解决这个问题,但我想不出来 我得到一个变量,它以4个字母开头,以2个数字结尾 现在我只想对那些以KJHB开头,以20-33之间的数字结尾的部分进行子集 我尝试的功能是:grepl函数-组合开始字符串和结束字符串,r,R,在过去的两个小时里,我一直在努力想办法解决这个问题,但我想不出来 我得到一个变量,它以4个字母开头,以2个数字结尾 现在我只想对那些以KJHB开头,以20-33之间的数字结尾的部分进行子集 我尝试的功能是: df <- mydata x <- seq(20,33) df2 <- subset(df, grepl('^KJHB & x$, col1)) df您可以尝试stringr。这并不能确切地检查它是字符串的开头还是结尾,但如果它是一个统一的模式,这可能会很有用:
df <- mydata
x <- seq(20,33)
df2 <- subset(df, grepl('^KJHB & x$, col1))
df您可以尝试stringr
。这并不能确切地检查它是字符串的开头还是结尾,但如果它是一个统一的模式,这可能会很有用:
my_match = function(string, start_string, num_seq){
return( str_extract(string, start_string) &&
any( !is.na( str_extract(string, as.character(num_seq)) ))
}
is_matched = my_match(df$your_col, "KJHB", 20:33)
df2 = df1[ is_matched, ]
用str\u locate也可以做一些更聪明的事情。好吧,我想出了一个不完全正确的答案,但它对我有用
x <- paste("KJHB",seq(20,33), sep = "")
x <- as.data.frame(table(x))
df2 <- subset(df, col1 %in% x$x)
x什么是mydata
?尝试使用grepl(“^[A-Z]{4}.[0-9]{2}$”,col1)
oh sorrymydata
就是我从名为col1
的列中得到的数据帧。您是否建议在[0-9]
中使用我刚刚编写的[20-33]
?不,您不能编写[20-33]
正则表达式,因为它可能是“^KJHB.*(2[0-9])|(3[0123])$”,虽然我对rI一无所知,但我只是在@Secespitus尝试了一下,但没有运气:我在gov PC上工作,他们不允许任何软件包安装,我发誓你能在base R
中提供-