Функция R - Рассчитать возрастные группы + нулевой возраст
Попытка классифицировать возрастную группу, но могут быть нулевые возрасты. Хотелось иметь группы "0-4", "5-24", "25-49", "50-64", "старше 64" и "нулевой возраст".
Я новичок в R; пытаясь изменить чужие коды.
Рассчитать возрастные группы
Вот оригинальный код:
calculateAgeGroup<-function(this.age,this.age_units) {
if(is.na(this.age) || is.na(this.age_units) || this.age=="NA") { return(NA) }
# first of all, if age has a comma, take lower number
this.minAge<-min(as.numeric(unlist(strsplit(this.age,","))))
# calculate div factor for date unit
this.divFactor = 1
if (grepl("^y",this.age_units,ignore.case=TRUE,perl=TRUE)) { this.divFactor = 1 }
if (grepl("^m",this.age_units,ignore.case=TRUE,perl=TRUE)) { this.divFactor = 12 }
if (grepl("^d",this.age_units,ignore.case=TRUE,perl=TRUE)) { this.divFactor = 365 }
this.yearsOfAge = this.minAge/this.divFactor
# now calculate age group Age 0-4,5-24,25-49,50-64,over 64
if (this.yearsOfAge < 5) { return("0-4") }
if (this.yearsOfAge < 25) { return("5-24") }
if (this.yearsOfAge < 50) { return ("25-49") }
if (this.yearsOfAge < 65) { return ("50-64") }
return("over 64")
}
Когда он запускается, я получаю следующие ошибки:
Ошибка в if (this.yearsOfAge < 5) {: пропущенное значение, где требуется TRUE/FALSE
Дополнительно: Предупреждающие сообщения:
1: В mysqlExecStatement(conn, Statement, ...): Предупреждение драйвера RS-DBI: (нераспознанный тип 7 поля MySQL в столбце 1, импортированный как символ)
2: В функции (this.age, this.age_units): NA введены по принуждению
1 ответ
Может быть, это помогает
AgeGrp <- as.character(cut(v1, breaks=c(0,4,24,49,64,Inf),
labels=c('0-4', '5-24', '25-49', '50-64', 'Over 64')))
AgeGrp[is.na(AgeGrp)] <- 'Null Age'
AgeGrp
данные
set.seed(39)
v1 <- sample(0:90, 40,replace=TRUE)
v1[5] <- NA