UPDATEread.csv wandelt numerisch Zeichen/Faktor, wenn Werte zu viele signifikante Stellen haben
Wenn eine csv mit read.csv
Lesen, benötige ich numerische Spalten mit NA
, ""
, NaN
und NULL
in gelesen werden a data.frame
als numerisch. Das Problem besteht darin, dass einige dieser Fälle in Zeichen umgewandelt werden. Außerdem muss ich jede Zeile entfernen, die keine vollständigen Fälle enthält.
Beispiel Datensatz:
df1 <- read.csv(text="
+ cat ,vala , valb, valc, vald, vale
+ only_valid_row, 1, 1.00000000000002e3, 1.99999999999999999e-2, 2e3, 3
+ a , '' , 12 , 13 , 2.1 , 10
+ b , 2e-3, NA , 1.1 , 1.11, 8
+ c , 3e2 , 2.1 , NaN , 3 , 7.1
+ d , 2 , 1e2 , 0.3 , , 0.1
+ e , 3 , 1e2 , 3.14, 6 , NULL
+ ", stringsAsFactors=FALSE,na.strings=c('NA','NaN','NULL'),quote='\'',strip.white=TRUE)
sapply(df1,class)
cat vala valb valc vald vale
#"character" "numeric" "numeric" "character" "numeric" "numeric"
(df2 <- df1[complete.cases(df1),])
cat vala valb valc vald vale
#1 only_valid_row 1 1000 1.99999999999999999e-2 2000 3
sapply(df2,class)
# cat vala valb valc vald vale
#"character" "numeric" "numeric" "character" "numeric" "numeric"
Danke für die bisherigen Antworten, aber es scheint die Wurzel des Problems ist die Anzahl der signifikanten Stellen nach dem (siehe valc
oben) dem Komma ist. Irgendwelche Vorschläge?
Hinzufügen 'quote =‚\‘‘, na.strings = c ('NA', 'NaN', 'NULL'), strip.white = TRUE' zu deiner Liste in read.csv Arbeit? – rawr
@rawr sehen Sie bitte das Update: Es scheint die wahre Wurzel des Problems war, dass die numerische Eingabe eine große Anzahl von signifikanten Ziffern hatte, die auch in Zeichen umgewandelt wird. – N8TRO