繁体   English   中英

R函数-计算年龄组+空年龄

[英]R Function — Calculate Age Groups + Null Age

尝试对年龄段进行分类,但可能存在空年龄。 希望具有组“ 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驱动程序警告:(导入为字符的第1列中无法识别的MySQL字段类型7)

2:在函数(this.age,this.age_units)中:强制引入的NA

也许这会有所帮助

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM