Foro de debate

Extraer una cadena de caracteres especifica dentro de un cadena mayor

Extraer una cadena de caracteres especifica dentro de un cadena mayor

by Leoanrdo Bode Caceress -
Number of replies: 4

Mi problema es el siguiente tengo una cadena de String que deseo extraer otra pero el tamaño de lo que deseo extraer es dinámico .

Ejemplo: 'LABEL=BONIAT-3, CellIndex=53, CGI=3680100DD001B'

De aqui deseo extraer BONIAT-3

Ejemplo: 'LABEL=UCI2, CellIndex=53, CGI=3680100DD001B'

De aqui UCI2


En fin lo que deseo extraer esta después de el signo ''=''  y antes de la primera ","


Si me pudierana ayudar 


Gracias




In reply to Leoanrdo Bode Caceress

Re: Extraer una cadena de caracteres especifica dentro de un cadena mayor

by Manuel Muñoz Márquez -

Hola Leoanrdo:

Tal vez te sirva:

> x <- 'LABEL=BONIAT-3, CellIndex=53, CGI=3680100DD001B'
> xs <- strsplit(x, '=')
> xs
[[1]]
[1] "LABEL"               "BONIAT-3, CellIndex" "53, CGI"           
[4] "3680100DD001B"     

> xs <- xs[[1]]
> xs
[1] "LABEL"               "BONIAT-3, CellIndex" "53, CGI"           
[4] "3680100DD001B"     
> i <- which(xs == 'LABEL')
> i
[1] 1
> xss <- strsplit(xs[i+1], ',')
> xss
[[1]]
[1] "BONIAT-3"   " CellIndex"

> xss[[1]][1]
[1] "BONIAT-3"
> x <- 'LABEL=UCI2, CellIndex=53, CGI=3680100DD001B'
> xs <- strsplit(x, '=')
> xs
[[1]]
[1] "LABEL"           "UCI2, CellIndex" "53, CGI"         "3680100DD001B" 

> xs <- xs[[1]]
> xs
[1] "LABEL"           "UCI2, CellIndex" "53, CGI"         "3680100DD001B" 
> i <- which(xs == 'LABEL')
> i
[1] 1
> xss <- strsplit(xs[i+1], ',')
> xss
[[1]]
[1] "UCI2"       " CellIndex"

> xss[[1]][1]
[1] "UCI2"

Un saludo.

P.D.: ¿El nombre que aparece es correcto o tiene alguna errata?


In reply to Leoanrdo Bode Caceress

Re: Extraer una cadena de caracteres especifica dentro de un cadena mayor

by David Suárez -

Hola,

te convendría usar una expresión regular:

> cadenas <- c('LABEL=BONIAT-3, CellIndex=53, CGI=3680100DD001B', 'LABEL=UCI2, CellIndex=53, CGI=3680100DD001B')
> m <- regexpr("LABEL=([-a-zA-Z0-9]+)",cadenas) #utiliza el primer argumento como expresion regular para extraer el primer atributo de cada cadena. Devuelve un vector con las posiciones y la longitud del texto que coincide con la expresión regular
> regmatches(cadenas, m) #utiliza el resultado de regexpr para extraer las coincidencias
> sub("LABEL=", "", regmatches(cadenas, m)) #Elimina la parte fija de cada coincidencia
In reply to Leoanrdo Bode Caceress

Re: Extraer una cadena de caracteres especifica dentro de un cadena mayor

by Ernesto Arreaga Carvajal -

Visita mi tutorial de R en YouTube:

https://www.youtube.com/watch?v=ja5C4bA8hvQ&t=6s


In reply to Leoanrdo Bode Caceress

Re: Extraer una cadena de caracteres especifica dentro de un cadena mayor

by César Anderson Huamaní Ninahuanca -

Puedes usar la siguiente sintaxis:

cargas la librería stringr:

library(stringr)


x <- 'LABEL=BONIAT-3, CellIndex=53, CGI=3680100DD001B'


# Lo primero que se tiene que hacer es usar str_split.


str_split(x, ",")


# convierto todo a vector. 


vector_p<-unlist(str_split(x, ","))


# Ahora genero la expresión regular para quedarme con BONIAT-3.


vector_p<-str_replace(vector_p, ".*=", "")

vector_p[1]