Ho un dataframe in R
che ho caricato da un file CSV. Una delle variabili è chiamata "Quantità" e intende contenere numeri positivi e negativi.R - Da errore fattoriale a numerico o intero
Quando ho guardato il dataframe, il tipo di dati di questa variabile è elencato come un fattore, e ne ho bisogno in un formato numerico (Non sono sicuro quale tipo se - intero - numerico, umm ...?). Così, ho provato a convertirlo in uno di questi due formati, ma ho visto alcuni comportamenti interessanti.
dataframe iniziale:
str(df)
Amount : Factor w/ 11837 levels "","-1","-10",..: 2 2 1664 4 6290 6290 6290 6290 6290 6290 ...
Come ho già detto, ho visto qualcosa di strano quando ho cercato di convertirlo in uno numerico o intero. Per mostrare questo, ho messo insieme questo confronto:
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
I as.numeric
e as.integer
funzioni stanno prendendo la variabile Importo e fare qualcosa per essa, ma non sanno che questo è. Il mio obiettivo è di ottenere la variabile Amount in una sorta di tipo di dati numerico in modo da poter eseguire sum/mean/etc su di esso.
Che cosa sto facendo in modo errato che causa i numeri strani e cosa posso fare per risolverlo?
volta la colonna in questione è un personaggio, piuttosto che fattore, sono stato in grado di trovare la fonte di questo tipo di problema abbastanza rapidamente utilizzando 'grep' o' grepl' a controlla alcuni probabili sospetti. – joran
+1 buona risposta. Ho ampliato un po 'la mia risposta su come trovare i valori offendenti ... – Tommy
Spazzatura in .... Alcune virgole hanno causato il problema. Grazie per l'assistenza. – mikebmassey