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

Вот вопрос/подсказка

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

Для 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(<"

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


person N2itive1    schedule 19.10.2014    source источник
comment
Аргумент levels для factor() работает не так, как вы думаете. Проверьте ifelse.   -  person Ben Bolker    schedule 20.10.2014
comment
так должен ли я использовать другой аргумент вместо уровней, Бен?   -  person N2itive1    schedule 20.10.2014
comment
Если вы посмотрите на ?factor, вы увидите, что он принимает такой аргумент, что это a vector of data, usually taking a small number of distinct values.. Вы прошли непрерывный вектор. Вам нужно классифицировать это до или во время вызова factor.   -  person user20650    schedule 20.10.2014


Ответы (1)


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 
person IRTFM    schedule 19.10.2014