J'ai une colonne dans une trame de données comme suit:
COL1
$54,345
$65,231
$76,234
Comment puis-je le convertir en ceci:
COL1
54345
65231
76234
La façon dont je l'ai essayé au début était:
df$COL1<-as.numeric(as.character(df$COL1))
Cela n'a pas fonctionné car cela a indiqué que les NA ont été introduits.
Ensuite, je l'ai essayé comme ceci:
df$COL1<-as.numeric(gsub("\\$","",as.character(df$COL1)))
Et la même chose s'est produite.
Des idées?
La raison pour laquelle le gsub
ne fonctionnait pas était qu'il y avait ,
dans la colonne, qui n'est toujours pas numérique. Ainsi, lors de la conversion en "numérique" avec as.numeric
, tous les éléments non numériques sont convertis en NA
. Nous devons donc supprimer les deux ,
et $
pour le faire fonctionner.
df1$COL1 <- as.numeric(gsub('[$,]', '', df1$COL1))
Nous faisons correspondre le $
et ,
entre crochets ([$,]
) afin qu'il soit considéré comme ce caractère ($
laissé seul a une signification spéciale, c'est-à-dire qu'il signifie la fin de la chaîne.) et remplacez-le par ''
.
Ou nous pouvons nous échapper (\\
) le personnage ($
) pour le faire correspondre et le remplacer par ''
.
df1$COL1 <- as.numeric(gsub('\\$|,', '', df1$COL1))
Nous pourrions utiliser parse_number
du package readr
qui supprime tous les caractères non numériques.
library(readr)
parse_number(df$COL1)
#[1] 54345 65231 76234
Une autre option utilisant la bibliothèque stringr pour supprimer "$" et "," puis convertissez comme suit:
df %>% mutate(COL1 = COL1 %>% str_remove_all("\\$,") %>% as.numeric())
Simplement:
Par exemple.
library(dplyr)
"$54,345" %>% gsub(",", "", .) %>% gsub("\\$", "", .) %>% as.numeric()
# [1] 54345