2015-07-02 4 views
0

Итак, я знаю, что это было задано раньше, но из того, что я искал, я не могу найти ответ на свою проблему. Я также должен добавить, что я относительно новичок в R (и любой тип кодирования вообще), поэтому, когда дело доходит до исправления проблем в коде, я не слишком уверен в том, что я ищу.R: «Отсутствует значение, где требуется True/False»

Мой код:

education_ge <- data.frame(matrix(ncol=2, nrow=1)) 
colnames(education_ge) <- c("Education","Genetic.Engineering") 

for (i in 1:nrow(survey)) 
if (survey[i,12]=="Bachelors") 
education_ge$Education <- survey[i,12] 

Чтобы дать больше информации, «обзор» представляет собой фрейм данных с 12 столбцов и 26 строк и 12-й колонке, «Образование», является фактором, который имеет уровни таких как «Холостяки», «Мастера», «Докторская» и т.д.

Это ошибка, как он появляется в R:

for (i in 1:nrow(survey)) 
    if (survey[i,12]=="Bachelors") 
    education_ge$Education <- survey[i,12] 
Error in if (survey[i, 12] == "Bachelors") education_ge$Education <- survey[i, : 
    missing value where TRUE/FALSE needed 

Любая помощь будет принята с благодарностью!

+0

проверьте, есть ли у вас 'NA' вместо символа в' servey [i, 12] ' –

+0

Не могли бы вы рассказать, что такое Education_ge $ Education. , Mayb, что вы можете сделать, это сохранить все записи «бакалавра» в массиве, а затем вне цикла, вы можете сохранить массив в области данных. Пожалуйста, дайте мне знать whats education_ge $ Образование и ваша цель кода короче, чтобы я мог предоставить вам код –

+0

Итак, у меня есть df, 'survey'. он имеет 12 столбцов, таких как образование, этническая принадлежность, возраст, комфорт с помощью генной инженерии и т. д. Я хочу, чтобы выбрать те строки, в которых образование является «бакалаврами», и поставить уровень образования и комфорта с помощью генетически модифицированных продуктов в новый dataframe, «education_ge», который я подбирал в колонку «Образование» (следовательно, Education_ge $ Education). – biochirrup

ответ

0

Если вы просто хотите, чтобы игнорировать любые записи с отсутствующими значениями и получить с вашим анализом, попытайтесь вставить это в начале:

survey <- survey[ complete.cases(survey), ] 

Это в основном находит индексы всех строк, где нет нет NAs в любом месте, а затем подмножества, чтобы иметь только те строки.

Для получения дополнительной информации о Подменю, попробуйте прочитать эту главу: http://adv-r.had.co.nz/Subsetting.html

Команда:

sapply(survey,function (x) sum(is.na(x))) 

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

+0

Спасибо за ваш ответ! Я пробовал это, и это приводит к тому, что education_ge имеет только одну строку с «Бакалаврами» в правильной колонке. Я ожидаю иметь около семи строк. – biochirrup

+0

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

0

Вы можете попробовать это:

sub<-subset(survey,survey$Education=="Bachelors") 

education_ge$Education<-sub$Education 

Позвольте мне знать, если это помогает.

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