web-dev-qa-db-fra.com

Extraire les 2 premiers caractères d'une chaîne

J'ai besoin d'extraire les 2 premiers caractères d'une chaîne pour créer plus tard une distribution de tracé bin. vecteur:

x <- c("75 to 79", "80 to 84", "85 to 89") 

Je suis arrivé jusqu'ici:

substrRight <- function(x, n){
  substr(x, nchar(x)-n, nchar(x))
}

invoquer la fonction

substrRight(x, 1)

Réponse

[1] "79" "84" "89"

Besoin d'imprimer les 2 derniers caractères, pas le premier.

[1] "75" "80" "85"
27
Seb

Vous pouvez simplement utiliser la fonction substr directement pour prendre les deux premiers caractères de chaque chaîne:

x <- c("75 to 79", "80 to 84", "85 to 89")
substr(x, start = 1, stop = 2)
# [1] "75" "80" "85"

Vous pouvez également écrire une fonction simple pour créer une sous-chaîne "inverse", en donnant les valeurs "start" et "stop" en supposant que l'index commence à la fin de la chaîne:

revSubstr <- function(x, start, stop) {
  x <- strsplit(x, "")
  sapply(x, 
         function(x) paste(rev(rev(x)[start:stop]), collapse = ""), 
         USE.NAMES = FALSE)
}
revSubstr(x, start = 1, stop = 2)
# [1] "79" "84" "89" 
51
dayne

Voici une solution stringr:

str_extract(x, "^.{3}")
8
Ben G

Utilisez gsub...

x <- c("75 to 79", "80 to 84", "85 to 89") 

gsub(" .*$", "", x) # Replace the rest of the string after 1st space with  nothing
[1] "75" "80" "85"
2
user5249203