2016-05-03 2 views
3

Довольно простой вопрос (я думаю). Я пытаюсь импортировать CSV-файл в R из эксперимента, в котором люди отвечают либо нажатием клавиши «e», либо «i». При тестировании я ответил только клавишей «i», поэтому переменная ответа в наборе данных в основном представляет собой список «i» (без кавычек). Когда я пытаюсь импортировать данные в R:R: read.csv импортирование буквы i как NA

noload=read.csv("~/Desktop/eprime check no load.csv", na.strings = "") 

переменная ответа выдает все НС. Когда я пытаюсь использовать все «e» или смесь «e» и «i», он отлично работает.

Что такое буква i, которая заставляет R обрабатывать ее как NA (n.b., она делает это даже без части na.strings = "")?

Заранее благодарим за любую помощь.

+0

Правильно ли указаны столбцы? Можете ли вы разместить образец своих данных? – Molx

+1

Странно ... действительно 'read.csv (text =" i, i, i, i \ ni, i, i, i \ ni, i, i, i ", header = FALSE)' all 'NA', но 'read.csv (text =" e, e, e, e \ ne, e, e, e \ ne, e, e, e ", header = FALSE, na.strings =" ")' отлично работает. Кажется, что любой столбец, в котором все 'i' будет установлен на' NA' – MichaelChirico

+2

Нечетный. В качестве обходного пути вы можете использовать 'readr :: read_csv' или' data.table :: fread'. – alistaire

ответ

6

Когда вы запрашиваете R для чтения в таблице без указания типов данных для столбцов, он попытается «угадать» типы данных. В этом случае он считает «сложным» для типа данных. Например, если у вас datafile.csv с содержанием

Var 
i 
i 
i 

и вы:

df = read.csv("datafile.csv", header = TRUE, na.strings = "") 
class(df$Var) 

вы получите

[1] "complex" 

R интерпретирует я как purely imaginary value. Чтобы исправить это просто указать типы данных с colClass, например, так:

df = read.csv("datafile.csv", header = TRUE, na.strings = "", colClass = "factor") 

или заменить factor с тем, что вы хотите. Обычно рекомендуется указывать типы данных спереди так, чтобы впоследствии не запутывать ошибки.

+1

Действительно 'dput (read.csv (text =" V1, V2, V3, V4 \ ni, i, i, i \ ni, i, i, i \ ni, i, i, i "))' отдает его , Но почему он не показывает '0 + 1i'? Почему он предполагает, что 'i' является' NA'? Я вижу 'as.complex (« i »)' is 'NA_complex_', а' as.complex (i) 'также неверно (' 300 + 0i) ') ... – MichaelChirico

+7

Я заполнил это как ошибку некоторое время назад и это было зафиксировано в последней версии R (v 3.3.0). См. [Здесь] (https://stat.ethz.ch/pipermail/r-announce/2016/000602.html) –

+0

@DavidArenburg не понимает, что 3.3 нет, спасибо! – MichaelChirico

Смежные вопросы