Je lis dans un tas de CSV qui ont des choses comme "ventes - des milliers" dans le titre et entrent dans R comme "ventes ... des milliers". Je voudrais utiliser une expression régulière (ou une autre méthode simple) pour les nettoyer.
Je ne peux pas comprendre pourquoi cela ne fonctionne pas:
#mock data
a <- data.frame(this.is.fine = letters[1:5],
this...one...isnt = LETTERS[1:5])
#column names
colnames(a)
# [1] "this.is.fine" "this...one...isnt"
#function to remove multiple spaces
colClean <- function(x){
colnames(x) <- gsub("\\.\\.+", ".", colnames(x))
}
#run function
colClean(a)
#names go unaffected
colnames(a)
# [1] "this.is.fine" "this...one...isnt"
mais ce code fait:
#direct change to names
colnames(a) <- gsub("\\.\\.+", ".", colnames(a))
#new names
colnames(a)
# [1] "this.is.fine" "this.one.isnt"
Notez que je vais bien laisser une période entre les mots lorsque cela se produit.
Je vous remercie.
Rich Scriven avait la réponse:
Définir
colClean <- function(x){ colnames(x) <- gsub("\\.\\.+", ".", colnames(x)); x }
et ensuite
a <- colClean(a)
mettre à jour un
names(a) <- gsub(x = names(a), pattern = "\\.", replacement = "#")
vous pouvez utiliser la fonction gsub
pour remplacer .
avec un autre caractère spécial comme #
.