Foro de debate

Extraer una cadena de caracteres especifica dentro de un cadena mayor

 
Imagen de Leoanrdo Bode Caceress
Extraer una cadena de caracteres especifica dentro de un cadena mayor
de Leoanrdo Bode Caceress - lunes, 4 de junio de 2018, 21:05
 

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




Imagen de Manuel Muñoz Márquez
Re: Extraer una cadena de caracteres especifica dentro de un cadena mayor
de Manuel Muñoz Márquez - lunes, 4 de junio de 2018, 23:06
 

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?


Imagen de David Suárez
Re: Extraer una cadena de caracteres especifica dentro de un cadena mayor
de David Suárez - martes, 5 de junio de 2018, 00:11
 

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
Imagen de Ernesto Arreaga Carvajal
Re: Extraer una cadena de caracteres especifica dentro de un cadena mayor
de Ernesto Arreaga Carvajal - lunes, 9 de julio de 2018, 16:58
 

Visita mi tutorial de R en YouTube:

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