2016-04-01 3 views
0
Df <- bball5 
str(bball5) 
'data.frame': 379 obs. of 9 variables: 
$ ID   : int 238 239 240 241 242 243 244 245 246 247 ... 
$ Sex  : Factor w/ 2 levels "female","male": 1 1 1 1 1 1 1 1 1 1 ... 
$ Sport  : Factor w/ 10 levels "BBall","Field",..: 1 1 1 1 1 1 1 1 1 1 
$ Ht   : num 196 190 178 185 185 ... 
$ Wt   : num 78.9 74.4 69.1 74.9 64.6 63.7 75.2 62.3 66.5 62.9 ... 
$ BMI  : num 20.6 20.7 21.9 21.9 19 ... 
$ BMIc  : NA NA NA NA NA NA NA NA NA NA ... 
$ Sex_f  : Factor w/ 1 level "female": 1 1 1 1 1 1 1 1 1 1 ... 
$ Sex_m  : Factor w/ 1 level "male": NA NA NA NA NA NA NA NA NA NA ... 

Я хотел бы класс набор числовых переменных внутри большого набора данных в 1000.Categorizing числовые и категориальные переменные в соответствующих интервалах в R

мне нужно классифицировать ИМТ в следующих диапазонах:

(<18.50, 18.50-24.99, 24.99-25.00, >=30.00) 

и маркировать их, соответственно, как:

"Underweight" "Normal" "Overweight" "Obese" 

так, чтобы построить таблицы в продемонстрировать взаимосвязи, которые являются отдельными для:
$ мужчины $ females
в зависимости от вида спорта.

Я также должен подтвердить, что ИМТ рассчитывается правильно сделан, как я нахожу, что трудно создать формулу в наборе данных для нового столбца переменного

$ BMIc. 

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

bball5$BMIc <- bball5$BMI[bball5$BMI, c(bball5$wt/(bball5$Ht)^2 ] 

Я неспособен к классу переменной BMI. Я должен поддерживать идентификатор, чтобы он соответствовал.

ответ

0

Вы можете создать переменную с именем BMIclass и сделать это, чтобы создать 4 категории в нем:

bball5$BMIclass <- "Underweight" 
bball5[which(bball5$BMI>18.5 & ball5$BMI<24.99), 'BMIclass'] <- "Normal" 
bball5[which(bball5$BMI>=24.99 & ball5$BMI<25), 'BMIclass'] <- "Overweight" 
bball5[which(bball5$BMI>=30), 'BMIclass'] <- "Obese" 
bball5$BMIclass <- as.factor(bball5$BMIc) 

Что касается BMIc вы можете сделать это (ниже). Он все равно будет создавать некоторые NA, где отсутствуют значения, но он даст вам правильный BMIc, где есть данные для него.

bball5$BMIc <- bball5$wt/bball5$Ht^2 
0

Я хотел бы использовать cut преобразовать BMI в категориальной переменной. Пример на случайном BMI вектора:

BMI <- runif(100, 16, 35) 
BMIc <- cut(BMI, breaks=c(0, 18.5, 25, 30, +Inf), 
      labels=c("Underweight", "Normal", "Overweight", "Obese")) 

Чтобы проверить результат, вы можете использовать aggregate:

aggregate(BMI, by=list(BMIc), summary) 

Наконец, новый вектор может быть включен в кадр данных с помощью команды df$BMIc <- BMIc, например, ...

+0

Большое вам спасибо! Это действительно полезно было очень полезно. – elmo