Импортировал CSV-набор данных в R, но значения становятся факторами - PullRequest
59 голосов
/ 04 марта 2011

Я очень плохо знаком с R, и у меня возникают проблемы с доступом к набору данных, который я импортировал. Я использую RStudio и использовал функцию импорта набора данных при импорте моего CSV-файла и вставил строку из окна консоли в окно исходного кода. Код выглядит следующим образом:

setwd("c:/kalle/R")
stuckey <- read.csv("C:/kalle/R/stuckey.csv")
point <- stuckey$PTS
time <- stuckey$MP

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

Ответы [ 7 ]

61 голосов
/ 04 марта 2011

Как функция импорта данных (здесь: read.csv()), так и глобальная опция предлагают вам сказать stringsAsFactors=FALSE, которая должна это исправить.

27 голосов
/ 04 марта 2011

По умолчанию read.csv проверяет первые несколько строк ваших данных, чтобы увидеть, следует ли рассматривать каждую переменную как числовую. Если он находит нечисловые значения, он предполагает, что переменная является символьными данными, а символьные переменные преобразуются в коэффициенты.

Похоже, что переменные PTS и MP в вашем наборе данных содержат нечисловые значения, поэтому вы получаете неожиданные результаты. Вы можете принудительно преобразовать эти переменные в числовые значения с помощью

point <- as.numeric(as.character(point))
time <- as.numeric(as.character(time))

Но любые значения, которые не могут быть преобразованы, пропадут. (R FAQ дает немного другой метод для коэффициента -> числового преобразования, но я никогда не могу вспомнить, что это такое.)

20 голосов
/ 04 марта 2011

Вы можете установить это глобально для всех read.csv/read.* команд с options(stringsAsFactors=F)

Затем прочитайте файл следующим образом: my.tab <- read.table( "filename.csv", as.is=T )

5 голосов
/ 28 мая 2015

При импорте файлов данных csv команда импорта должна отражать как разделение данных между каждым столбцом (;), так и разделитель с плавающим числом для ваших числовых значений (для числовой переменной = 2,5 это будет ",").

Поэтому команда для импорта csv должна быть немного более полной с большим количеством команд:

    stuckey <- read.csv2("C:/kalle/R/stuckey.csv", header=TRUE, sep=";", dec=",")

Это должно импортировать все переменные как целые или числовые.

2 голосов
/ 10 мая 2016

Я тоже новичок в R и столкнулся с точно такой же проблемой.Но затем я посмотрел на свои данные и заметил, что они вызваны тем, что в моем CSV-файле во всех числовых столбцах использовался разделитель запятой (,) (например: 1 233 444,56 вместо 1233444,56).

Iудалил разделитель запятых в моем файле csv, а затем перезагрузил в R. Мой фрейм данных теперь распознает все столбцы как числа.

Я уверен, что есть способ справиться с этим в самой функции read.csv.

1 голос
/ 29 августа 2018

Это сработало только для меня, если включить strip.white = TRUE в команду read.csv.

(я нашел решение здесь .)

0 голосов
/ 15 ноября 2018

для меня решение было включить пропустить = 0 (количество строк, которые нужно пропустить в верхней части файла. Может быть установлено> 0)

mydata <- read.csv (file = "file.csv", header = TRUE, sep = ",", skip = 22) </p>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...