R中识别字符串中第一个字符的最佳方法是什么?

时间:2019-07-03 01:22:29

标签: r parsing stringr grepl

我试图找到一种方法来循环遍历R中包含数字和字符的数据,并在找到第一个字符的位置返回所有值。例如:

column 
000HU89
87YU899 
902JUK8   

result
HU89
YU89 
JUK8

尝试过stringr_detct / grepl,但是第一个字符的值本质上是未知的,因此我很难将其拔出。

4 个答案:

答案 0 :(得分:1)

我们可以使用str_extract

stringr::str_extract(x, "[A-Z].*")
#[1] "HU89"  "YU899" "JUK8" 

数据

x <- c("000HU89", "87YU899", "902JUK8")

答案 1 :(得分:1)

罗纳克的答案很简单。 尽管我还想提供另一种方法:

column <-c("000HU89", "87YU899" ,"902JUK8")
# Get First character
first<-c(strsplit(gsub("[[:digit:]]","",column),""))[[1]][1]
# Find the location of first character
loc<-gregexpr(pattern =first,column)[[1]][1]
# Extract everything from that chacracter to the right
substring(column, loc, last = 1000000L)

答案 2 :(得分:0)

在R底下我们可以做

x <- c("000HU89", "87YU899", "902JUK8")
regmatches(x, regexpr("\\D.+", x))
# [1] "HU89"  "YU899" "JUK8" 

答案 3 :(得分:0)

我们可以使用sub中的base R来匹配字符串开头(\\d+)的一个或多个数字(^)并替换为空白({{ 1}})

""

数据

sub("^\\d+", "", x)
#[1] "HU89"  "YU899" "JUK8"