Objetivo

Manipular expresiones String

Desarrollo

Cargar librerías

# Algunas librerías
library(dplyr)
library(stringr)
# library(stringi)
texto <- "esto un es un simple texto. Bueno dias salud hola"
texto
## [1] "esto un es un simple texto. Bueno dias salud hola"

substring()

texto %>% substring(first = 1, last = 5)
## [1] "esto "
substring(text = texto, first = 1, last = 5)
## [1] "esto "

Extraer del caracter 9 al 20 de texto

extraer <- substring(first = 9, last = 20, text = texto)
extraer
## [1] "es un simple"

Longitud de una vector caracter nchar()

nchar(texto)
## [1] 49

toupper() y tolower()

tolower("HOLA COMO ESTAS") %>% substr(1,4)
## [1] "hola"
toupper("saludos desde R Studio") %>% substr(15, stop = nchar("saludos desde R Studio"))
## [1] "R STUDIO"

Funciones de string

Se utilizan funciones de la librería stringr y se utiliza de base el tutorial:https://r4ds.had.co.nz/strings.html

string1 <- "Esto es un string"
string2 <- 'Algunas "comillas" debe de comillas'
string3 <- "otras 'comilla simple' dentro de comillas dobles"
string1; string2; string3
## [1] "Esto es un string"
## [1] "Algunas \"comillas\" debe de comillas"
## [1] "otras 'comilla simple' dentro de comillas dobles"

Declarar comillas dobles y sencillas

comillas_dobles <- "\"" # or '"'
comilla_sencilla <- '\'' # or "'"


comillas_dobles; comilla_sencilla
## [1] "\""
## [1] "'"

Manejando ENTER y tabuladores

Pendiente

texto <- "hola como estas saludos. Estamos en R y R Studio"
texto
## [1] "hola como estas saludos. Estamos en R y R Studio"

str_length()

Cantidad de caracteres

str_length(c("H", "R for data science", NA))
## [1]  1 18 NA
nchar(c("H", "R for data science", NA))
## [1]  1 18 NA
str_count(c("H", "R for data science", NA))
## [1]  1 18 NA

Concatener string

paste() ó str_cp()

str1 <- "hola"
str2 <- "como estás"

paste(str1, str2, sep = " ")
## [1] "hola como estás"
str_c(str1, str2, sep = " ")
## [1] "hola como estás"

str_replace

frutas <- c("one apple", "two pears", "three bananas", "uvas", "naranjas", "tomate")
frutas
## [1] "one apple"     "two pears"     "three bananas" "uvas"         
## [5] "naranjas"      "tomate"
print(" ")
## [1] " "
cambios <- frutas %>% str_replace("[aeiou]", "-")
cambios
## [1] "-ne apple"     "tw- pears"     "thr-e bananas" "-vas"         
## [5] "n-ranjas"      "t-mate"

Texto extraño

texto_extranio <- "Erase una vez / n / t con algunas cosas $ % & SIN SENTIDO"

texto_limpio <- texto_extranio %>% str_replace("/", ' ')
texto_limpio
## [1] "Erase una vez   n / t con algunas cosas $ % & SIN SENTIDO"
texto_limpio <- texto_extranio %>% str_replace("$", ' ')
texto_limpio
## [1] "Erase una vez / n / t con algunas cosas $ % & SIN SENTIDO "
texto_limpio <- texto_extranio %>% str_replace("&", ' ')
texto_limpio
## [1] "Erase una vez / n / t con algunas cosas $ %   SIN SENTIDO"
texto_limpio <- texto_extranio %>% str_replace("%", ' ')
texto_limpio
## [1] "Erase una vez / n / t con algunas cosas $   & SIN SENTIDO"

mayusculas y minusculas

str_to_upper(c("i", "ı"))
## [1] "I" "I"
#> [1] "I" "I"
str_to_upper(c("i", "ı"), locale = "tr")
## [1] "I" "I"
str_to_upper(c("ñ"), locale = "es")
## [1] "Ñ"

Ordenar elementos de un vector

x <- c("zanhoria","apple", "eggplant", "banana", "naranja")

str_sort(x, locale = "sp") 
## [1] "apple"    "banana"   "eggplant" "naranja"  "zanhoria"
sort(x)
## [1] "apple"    "banana"   "eggplant" "naranja"  "zanhoria"

Encontrar patrones

x <- c("apple", "banana", "pear", "experimentando", "experiencia", "exposiciones", "no exporta")
todo.con.exp <- str_view(x, "exp")
todo.con.exp

Patrones específicos

# Todos lo que inicie con 
str_view(x, "^a")
str_view(x, "^ex")
str_view(x, "exp")

detectar caracteres

x <- c(x, c('axioma', "exercise"))
x
## [1] "apple"          "banana"         "pear"           "experimentando"
## [5] "experiencia"    "exposiciones"   "no exporta"     "axioma"        
## [9] "exercise"
str_detect(x, "e") # Las que tengan e
## [1]  TRUE FALSE  TRUE  TRUE  TRUE  TRUE  TRUE FALSE  TRUE
str_detect(x, "ex") # Las que tengan ex
## [1] FALSE FALSE FALSE  TRUE  TRUE  TRUE  TRUE FALSE  TRUE
str_detect(x, "^ex") # Las que inicien con ex
## [1] FALSE FALSE FALSE  TRUE  TRUE  TRUE FALSE FALSE  TRUE
str_detect(x, "^[ax|ex]")
## [1]  TRUE FALSE FALSE  TRUE  TRUE  TRUE FALSE  TRUE  TRUE
# Devolviendo las palabras que inicen con ex o ax
x[str_detect(x, "^[ax|ex]")]
## [1] "apple"          "experimentando" "experiencia"    "exposiciones"  
## [5] "axioma"         "exercise"

Trabajando gsub y sub con un data.frame

Cerando data.frame

#creating a data frame
df<-data.frame(Column_1 = c('Florida','Germany','Georgia','Geniva','Istanbul','NewZealand','Australia'), Column_2=c(1,2,3,4,5,6,7))
 
#data frame
df
##     Column_1 Column_2
## 1    Florida        1
## 2    Germany        2
## 3    Georgia        3
## 4     Geniva        4
## 5   Istanbul        5
## 6 NewZealand        6
## 7  Australia        7

Evaluando el df con sub y gsub

# Reemplazar G con A
sub('G','A',df)
## [1] "c(\"Florida\", \"Aermany\", \"Georgia\", \"Geniva\", \"Istanbul\", \"NewZealand\", \"Australia\")"
## [2] "c(1, 2, 3, 4, 5, 6, 7)"
#substituting the values
sub('G','A',df$Column_1)
## [1] "Florida"    "Aermany"    "Aeorgia"    "Aeniva"     "Istanbul"  
## [6] "NewZealand" "Australia"