Tengo un dataframe en R
que cargué de un archivo CSV. Una de las variables se llama "Cantidad" y está destinada a contener números positivos y negativos.R - De factor a error numérico o entero
Cuando miré en el marco de datos, el tipo de datos de esta variable se enumera como un factor, y lo necesito en un formato numérico (¿Pero no está seguro de qué tipo - entero - numérico, umm ...?). Entonces, traté de convertirlo a uno de esos dos formatos pero vi un comportamiento interesante.
trama de datos inicial:
str(df)
Amount : Factor w/ 11837 levels "","-1","-10",..: 2 2 1664 4 6290 6290 6290 6290 6290 6290 ...
Como he mencionado anteriormente, vi algo raro cuando traté de convertirlo en tanto numérica como de número entero. Para mostrar esto, he creado esta comparación:
df2 <- data.frame(df$Amount, as.numeric(df$Amount), as.integer(df$Amount))
str(df2)
'data.frame': 2620276 obs. of 3 variables:
$ df.Amount : Factor w/ 11837 levels "","-1","-10",..: 2 2 1664 4 6290 6290 6290 6290 6290 6290 ...
$ as.numeric.df.Amount.: num 2 2 1664 4 6290 ...
$ as.integer.df.Amount.: int 2 2 1664 4 6290 6290 6290 6290 6290 6290 ...
> head(df2, 20)
df.Amount as.numeric.df.Amount. as.integer.df.Amount.
1 -1 2 2
2 -1 2 2
3 -201 1664 1664
4 -100 4 4
5 1 6290 6290
6 1 6290 6290
7 1 6290 6290
8 1 6290 6290
9 1 6290 6290
10 1 6290 6290
11 1 6290 6290
12 1 6290 6290
13 1 6290 6290
14 1 6290 6290
15 1 6290 6290
16 1 6290 6290
17 1 6290 6290
18 2 7520 7520
19 2 7520 7520
20 2 7520 7520
Los as.numeric
y as.integer
funciones están tomando la variable Monto y hacer algo a ella, pero no saben que es eso. Mi objetivo es hacer que la variable Amount se convierta en un tipo de tipo de datos numéricos para poder realizar sum/mean/etc en él.
¿Qué estoy haciendo incorrectamente que está causando los números extraños, y qué puedo hacer para solucionarlo?
Una vez que la columna en cuestión es un personaje, en lugar de los factores, he sido capaz de encontrar la fuente de este tipo de problemas utilizando con bastante rapidez '' grep' o grepl' a busca posibles sospechosos. – joran
+1 Buena respuesta. Lo amplié un poco en mi respuesta sobre cómo encontrar los valores ofensivos ... – Tommy
Basura en .... Algunas comas deshonestas causaron el problema. Gracias por la asistencia. – mikebmassey