Manipular expresiones String
# 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"
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"
nchar(texto)
## [1] 49
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"
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] "'"
Pendiente
texto <- "hola como estas saludos. Estamos en R y R Studio"
texto
## [1] "hola como estas saludos. Estamos en R y R Studio"
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
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"
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_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"
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] "Ñ"
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"
x <- c("apple", "banana", "pear", "experimentando", "experiencia", "exposiciones", "no exporta")
todo.con.exp <- str_view(x, "exp")
todo.con.exp
# Todos lo que inicie con
str_view(x, "^a")
str_view(x, "^ex")
str_view(x, "exp")
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"
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"