Значения NA отображаются для всех данных в импортированном файле .csv

Я импортировал в RStudio набор данных, содержащий 85 переменных и 139 наблюдений. Все значения являются целыми, за исключением последнего столбца, который пуст и по какой-то причине был импортирован вместе со всем остальным в файле .csv, который я создал из файла .xls.

Таким образом, этот последний столбец содержит все значения NA. Проблема в том, что когда я пытаюсь запустить какой-либо анализ, мне кажется, что все значения являются NA значениями. Несмотря на это, в окне данных в RStudio вроде все нормально. Существуют ли решения этой проблемы, не связанные с данными? Почти наверняка проблема в данных?

Кажется странным, что при открытии файла в любом другом месте и даже просмотре его в R


r na
person Max Power    schedule 22.08.2014    source источник
comment
Попробуйте sapply(strsplit(readLines("your.csv"), ","), length), и если они не все равны, у вас будет случайная запятая в неравной строке.   -  person Rich Scriven    schedule 22.08.2014
comment
При проведении анализа вы исключаете столбец NA? Удаление столбца из вашего фрейма данных перед любым анализом может вам помочь.   -  person Bernardo    schedule 22.08.2014
comment
@Richard Я только что проверил это, и все они оказались равными. Это удобный трюк, который нужно знать, спасибо.   -  person Max Power    schedule 22.08.2014
comment
@Bernardo Я пытался запустить его со столбцом проблем и без него.   -  person Max Power    schedule 22.08.2014


Ответы (3)


Наиболее вероятная проблема заключается в том, что файл импортируется как текст, а не как числовые данные. Если все данные являются числовыми, вы можете просто использовать colClasses="numeric" в качестве аргумента функции read.csv(), и это должно правильно импортироваться. Вы также можете изменить класс данных, когда он находится в R, или дать colClasses вектор разных классов, если в вашем файле есть множество различных типов данных (логические, символьные, числовые и т. д.).

Изменить Видя, что colClasses не работает (трудно сказать, почему, не глядя на ваши данные), вы можете попробовать это:

MyDF<-data.frame(sapply(MyDF,FUN=as.numeric))

Где MyDF — это ваш фреймворк данных. Это изменит все ваши столбцы на числовые. Если у вас есть какие-то символы/факторы/логические значения, это может работать не так, как ожидалось. Возможно, вы захотите проверить свой файл excel/csv, чтобы узнать, почему он импортирует столбец NA. Возможно, есть ячейка с пустым пространством, которое втягивается внутрь, и это отбрасывает вещи. Вы всегда можете попробовать удалить этот пустой столбец и повторить импорт.

person John Paul    schedule 22.08.2014
comment
К сожалению, не повезло. Я попробовал `A ‹- read.csv(Test.File,colClasses=numeric), но возникла та же проблема. - person Max Power; 22.08.2014
comment
Если вы используете команду class() для одного из столбцов data.frame, проверяется ли она числовым значением? - person John Paul; 22.08.2014
comment
Спасибо, все, что я тестировал до сих пор, возвращаются в виде персонажей — это будет очень полезным тестом в будущем. Есть идеи, почему решение colClasses=numeric может не работать? - person Max Power; 22.08.2014

Если вы хотите опустить последний столбец при чтении самих данных, вы можете попробовать следующий код. В этом примере я предполагаю, что ваш файл имеет 5 столбцов, а 5-й столбец имеет значения NA. Итак, вы хотите пропустить чтение 5-го столбца в вашем наборе данных.

data <- read.csv (fileName, ....) [,1:4]

или, если вы хотите использовать имена столбцов, вы можете использовать:

data <- read.csv (fileName, ....) [,c('col1','col2','col3','col4')]

При этом будут прочитаны все наблюдения из выбранных столбцов в вашем наборе данных.

Надеюсь это поможет.

person user3694373    schedule 23.08.2014
comment
На самом деле, это все еще читает все столбцы. Подмножество возникает после чтения. - person Rich Scriven; 23.08.2014
comment
Да, но поскольку он отсутствует в объекте «данные», столбец будет отсутствовать для дальнейшего анализа данных. - person user3694373; 23.08.2014

Если вы тоже пытаетесь найти среднее значение и стандартное отклонение, вы можете использовать

Data<- mean( dataframe$colname , na.rm = TRUE) 
Data1<- sd( dataframe$colname , na.rm = TRUE) 

Это даст вам ответ после исключения значений na из столбца.

person chirag garg    schedule 21.01.2021