Измените тип данных столбца CSV с символьного на числовой, чтобы применить функцию диапазона - PullRequest
0 голосов
/ 28 августа 2018

Содержание файла csv приведено ниже: Data set with details of an automobile

Здесь мощность в колонке является символом по умолчанию. Когда я применил функцию дальности в лошадиных силах как:

    sapply(Auto[,4],range)

Появляется следующее сообщение об ошибке:

    Error in Summary.factor(17L, na.rm = FALSE) : 

«диапазон» не имеет значения для факторов

Поэтому я попытался преобразовать символ в числовое значение:

   as.numeric(as.character(Auto$horsepower))

В результате выдается предупреждение:

   NAs introduced by coercion 

После вышеуказанного шага я также не могу применить функцию диапазона. Как использовать функцию дальности в колонке лошадиных сил? Обратите внимание, что набор данных содержит символ «?» в лошадиных силах колонной № 127.

Ответы [ 2 ]

0 голосов
/ 28 августа 2018

Основная проблема заключается в том, что horsepower был преобразован в коэффициент, когда файл CSV был прочитан в R. Это связано с наличием символа ?.

Вы можете избежать этого, используя например.

Auto <- read.csv("myfile.csv", 
                 stringsAsFactors = FALSE, 
                 na.strings = "?") 
0 голосов
/ 28 августа 2018

Вам нужно это:

range(as.numeric(as.character(Auto$horsepower)), na.rm=TRUE)

Если вы хотите преобразовать числовой вид фактического числа в действительное, правильнее использовать as.numeric(as.character()). Для вас это вводит NA, потому что у вас есть такие значения, как "?" в столбце для horsepower и R не знает, как повернуть "?" в число, так что оно превращает его в NA.

Теперь вы можете вычислить range, но вам нужно указать range "пропустить" NA с аргументом na.rm=TRUE.

...