Quiero extraer los primeros (o últimos) n caracteres de una cadena. Este sería el equivalente a Excel LEFT()
y RIGHT()
. Un pequeño ejemplo:
# create a string
a <- paste('left', 'right', sep = '')
a
# [1] "leftright"
Me gustaría producir b
una cadena que sea igual a las primeras 4 letras de a
:
b
# [1] "left"
¿Qué tengo que hacer?
stringr
solución.El
stringr
paquete proporciona lastr_sub
función, que es un poco más fácil de usarsubstr
, especialmente si desea extraer las partes correctas de su cadena:R> str_sub("leftright",1,4) [1] "left" R> str_sub("leftright",-5,-1) [1] "right"
fuente
R
:)stringr
te ahorrará casi tanta molestia comolubridate
.Puede obtener fácilmente las funciones Derecha () e Izquierda () a partir del paquete Rbase:
función correcta
right = function (string, char) { substr(string,nchar(string)-(char-1),nchar(string)) }
función izquierda
left = function (string,char) { substr(string,1,char) }
puede usar esas dos funciones personalizadas exactamente como left () y right () en Excel. Espero que te resulte útil
fuente
Hágalo simple y use las funciones básicas de R:
# To get the LEFT part: > substr(a, 1, 4) [1] "left" > # To get the MIDDLE part: > substr(a, 3, 7) [1] "ftrig" > # To get the RIGHT part: > substr(a, 5, 10) [1] "right"
La
substr()
función te dice dónde empezar y pararsubstr(x, start, stop)
fuente
Si viene desde Microsoft Excel, las siguientes funciones serán similares a
LEFT()
,RIGHT()
yMID()
funciones.# This counts from the left and then extract n characters str_left <- function(string, n) { substr(string, 1, n) } # This counts from the right and then extract n characters str_right <- function(string, n) { substr(string, nchar(string) - (n - 1), nchar(string)) } # This extract characters from the middle str_mid <- function(string, from = 2, to = 5){ substr(string, from, to) }
Ejemplos:
x <- "some text in a string" str_left(x, 4) [1] "some" str_right(x, 6) [1] "string" str_mid(x, 6, 9) [1] "text"
fuente