2014-10-19 3 views
0

Вот вопрос/приглашениеГенерировать случайные нормальные данные, а затем классифицировать

  1. Для этого, генерировать вектор 1000 значений, которые случайным образом отобранных из нормального распределения со средним значением 50 и стандартным отклонением 10 . Пометьте эту дополнительную колонку «RGENDER».
  2. Измените RGender таким образом, чтобы значения менее 50 были обозначены как Male, а значения 50 или более обозначены как Female. При использовании уровней() для значения $ RGENDER вы должны увидеть "Женский" и "Мужской" **

Для 1. У меня есть:.

stats$RGENDER <- rnorm(1000, 50 ,10) 

И 2. Я пытался:

stats1$RGENDER <- factor(stats$RGENDER, levels=c(<50, >50), 
               labels=c("Male", "Female")) 

я получаю сообщение об ошибке,

Error: unexpected '<' in "stats$RGENDER <- factor(stats$RGENDER, levels=c(<"

и я не уверен, что делать. Кто-нибудь знает, является ли это полностью неправильной функцией или я просто делаю ошибку при написании функции?

+0

Аргумент 'levels'' factor() 'не работает так, как вы думаете. Проверьте 'ifelse'. –

+0

так должен ли я использовать другой аргумент в замене уровней Бена? – N2itive1

+0

Если вы посмотрите на '? Factor', вы увидите, что он принимает аргумент таким образом, что он является« вектором данных, обычно принимающим небольшое количество различных значений ». Вы прошли непрерывный вектор. Вы должны классифицировать это до или в вызове 'factor'. – user20650

ответ

2
stats <- data.frame(RGENDER=rep(NA,1000)) # Cannot use `$<-` unless df exists 
stats$RGENDER <- rnorm(1000, 50 ,10) 
stats$RGENDER <- factor(stats$RGENDER >50, levels=c('TRUE','FALSE'), 
               labels=c("Male", "Female")) 

Необходимо установить «уровни», чтобы они соответствовали тому, что будет возвращено логическим оператором.

> table(stats$RGENDER) 

    Male Female 
    513 487 
+0

Спасибо BondedDust – N2itive1