web-dev-qa-db-fra.com

Dans R: supprimez les virgules d'un champ ET laissez le champ modifié faire partie de la trame de données

Je dois supprimer des virgules d'un champ dans une trame de données R. Techniquement, j'ai réussi à le faire, mais le résultat ne semble être ni un vecteur ni une matrice, et je ne peux pas le réintégrer dans la trame de données dans un format utilisable. Existe-t-il un moyen de supprimer les virgules d'un champ ET que ce champ fasse toujours partie de la trame de données.

Voici un exemple du champ qui nécessite la suppression des virgules et les résultats générés par mon code:

> print(x['TOT_EMP'])
         TOT_EMP
1    132,588,810
2      6,542,950
3      2,278,260
4        248,760

> y
[1] "c(\"132588810\" \"6542950\" \"2278260\" \"248760\...)"

Le résultat souhaité est un champ numérique:

       TOT_EMP
1    132588810
2      6542950
3      2278260
4       248760

x<-read.csv("/home/mark/Desktop/national_M2013_dl.csv",header=TRUE,colClasses="character")
y=(gsub(",","",x['TOT_EMP']))
print(y)
9
mark stevenson

gsub() renverra un vecteur de caractères, pas un vecteur numérique (c'est-à-dire qu'il sonne comme vous le souhaitez). as.numeric() reconvertira le vecteur de caractères en vecteur numérique:

> df <- data.frame(numbers = c("123,456,789", "1,234,567", "1,234", "1"))
> df
      numbers
1 123,456,789
2   1,234,567
3       1,234
4           1
> df$numbers <- as.numeric(gsub(",","",df$numbers))
> df
    numbers
1 123456789
2   1234567
3      1234
4         1

Le résultat est toujours un data.frame:

> class(df)
[1] "data.frame"
13
Richard Border