поиск, содержит ли столбец несколько классов данных.стол
У меня есть массив данных.таблица, так что я не могу видеть все мои записи в Столбцах.
Я хочу преобразовать столбец, который, по-видимому, имеет классовый характер, в числовой, однако, когда я использую as.numeric (col_name), я получаю предупреждение "NAs введен принудительно". Прежде чем я сделаю что-нибудь еще, я хотел бы узнать, могу ли я узнать, какие записи в столбце не являются символами или что вызывает проблему.
Я делаю str на данных.таблица, которая дает:
Classes ‘data.table’ and 'data.frame': 57042881 obs. of 21 variables:
$ V1 : int 142466 1265 142510 199933 143297 13548 143605 15194 143894 16701 ...
$ V2 : int 1 1 1 1 1 1 1 1 1 1 ...
$ V3 : int 20150702 20160316 20150702 20160316 20150703 20160324 20150704 20160327 20150704 20160331 ...
$ V4 : int 14 17 15 6 16 17 9 20 14 15 ...
$ V5 : chr "2015-07-02 14:50:00" "2016-03-16 17:40:00" "2015-07-02 15:58:00" "2016-03-16 06:20:00" ...
$ V6 : int 33547 25523 33547 25523 33547 25523 33547 25523 33547 25523 ...
$ V7 : num 42.9 33.9 53.8 65.3 35.7 ...
$ V8 : int 2 2 2 2 2 2 2 2 2 2 ...
$ V9 : num 60 34.5 75.3 66.5 50 ...
$ V10: num 5.46 3.14 6.84 6.05 4.55 3.3 0.71 2.18 3.11 1.82 ...
$ V11: chr "1.271732" "0.926145" "1.271883" "0.926295" ...
$ V12: num 1.4 1.02 1.4 1.02 1.4 ...
$ V13: int 0 0 0 0 0 0 0 0 0 0 ...
$ V14: int 0 0 0 0 0 1 0 0 0 0 ...
$ V16: chr "ULP" "ULP" "ULP" "ULP" ...
$ V17: POSIXct, format: "2015-07-02 14:50:00" "2016-03-16 17:40:00" "2015-07-02 15:58:00" "2016-03-16 06:20:00" ...
$ V18: Date, format: "2015-07-02" "2016-03-16" "2015-07-02" "2016-03-16" ...
$ V19: int 2015 2016 2015 2016 2015 2016 2015 2016 2015 2016 ...
$ V20: int 7 3 7 3 7 3 7 3 7 3 ...
$ V21: int 2 16 2 16 3 24 4 27 4 31 ...
А потом я хочу ... преобразуйте V11 в числовое значение.
dt_2 <- dt[, V11 := as.numeric(V11)]
Warning message:
In eval(expr, envir, enclos) : NAs introduced by coercion
Почему я получаю это предупреждение? Не потому ли, что в столбце V11 есть типы, отличные от символов? Если да, то как найти значения в столбце V11, которые не являются символами?
Спасибо!
1 ответ:
Поскольку набор данных действительно велик, возможно, будет лучше прочитать один столбец снова в новом сеансе (поскольку OP уже заменил столбец "V11", присвоив его себе (
:=
).library(data.table) dt1 <- fread("yourfile.csv", select = 11)
Используя аргумент
select
, мы можем прочитать конкретный столбец. Затем мы преобразуем этот столбец вnumeric
, проверяем элементы NA с помощьюis.na
и создаем логическийvector
.i1 <- is.na(as.numeric(dt1[[1]]))
Подмножество столбца на основе ' i1 '
v1 <- dt1[[1]][i1]
А затем сделайте следующее: расследование.
Через 1 час
И основываясь на результатах исследования, ОП отметил, что значения были
"null"
. В этом случае мы можем использоватьna.strings = "null"
вfread
, и он должен заменить "null" наNA
, и мы получим правильныйclass
(предполагая, что нет других нечисловых строк)dt2 <- fread("yourfile.csv", na.strings = "null")