211 votes

Comment supprimer tous les espaces blancs d'une chaîne de caractères en R ?

Ainsi, " xx yy 11 22 33 " deviendra " xxyy112233 ". Comment puis-je réaliser cela ?

10voto

damianooldoni Points 189

La fonction str_squish() du paquet stringr de tidyverse fait la magie !

library(dplyr)
library(stringr)

df <- data.frame(a = c("  aZe  aze s", "wxc  s     aze   "), 
                 b = c("  12    12 ", "34e e4  "), 
                 stringsAsFactors = FALSE)
df <- df %>%
  rowwise() %>%
  mutate_all(funs(str_squish(.))) %>%
  ungroup()
df

# A tibble: 2 x 2
  a         b     
  <chr>     <chr> 
1 aZe aze s 12 12 
2 wxc s aze 34e e4

4 votes

Veuillez ne pas créer de lien vers le code. Ajoutez-le dans le corps du texte de votre réponse et expliquez-le ici, afin de donner à votre réponse une valeur à plus long terme.

0 votes

Merci @RBalasubramanian de m'avoir rappelé cette directive. Je la suivrai à l'avenir.

4 votes

Je ne vois pas comment cela répond à la question. str_squish ne supprime pas tous les espaces. Il ne fait qu'effacer et remplacer plusieurs espaces par un seul.

6voto

Tho Vu Points 1097

Une autre approche peut être prise en compte

library(stringr)
str_replace_all(" xx yy 11 22  33 ", regex("\\s*"), "")

#[1] "xxyy112233"

\\s : Correspond à l'espace, la tabulation, la tabulation verticale, la nouvelle ligne, le saut de page, le retour de chariot.

* : Correspond à au moins 0 fois

0voto

Data Jules Points 1

A partir de la bibliothèque stringr, vous pouvez essayer ceci :

  1. Supprimer les blancs de remplissage consécutifs
  2. Suppression du blanc de remplissage

    library(stringr)

                2.         1.
                |          |
                V          V
    
        str_replace_all(str_trim(" xx yy 11 22  33 "), " ", "")

0voto

NinaOtopal Points 1

De cette façon, vous pouvez supprimer tous les espaces de toutes les variables de caractère dans votre cadre de données. Si vous préférez ne choisir que certaines des variables, utilisez mutate ou mutate_at .

library(dplyr)
library(stringr)

remove_all_ws<- function(string){
    return(gsub(" ", "", str_squish(string)))
}

df<-df %>%  mutate_if(is.character, remove_all_ws)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X