Binning ages in R -


i'm trying write function bins ages different groups.

suppose data following:

birthyear

1987 1995 1994 1981 1994 1989 1985 1987 1996 1981 1980 1994 1996 1983 1949 1988 1998 1977 1967 1968 

and function written convert birth year ages , bin them 1 of 10 different categories based on data frame called agebreaks:

>agebreaks                 category birth.min birth.max 1       14 19 years      2000      1995 2       20 24 years      1994      1990 3       25 34 years      1989      1980 4       35 44 years      1979      1970 5       45 54 years      1969      1960 6       55 59 years      1959      1955 7       60 64 years      1954      1950 8       65 74 years      1949      1940 9       75 84 years      1939      1930 10   85 years , on      1959      1864 

function:

    bin.age <- function(burthyear,agebreak,2014){     p.ages <- yyyy-df$age     ab     <- as.data.frame(agebreak)     min.ab <- yyyy-ab$birth.min     max.ab <- yyyy-ab$birth.max     avec   <- sort(c(min.ab[1],max.ab[1],min.ab[2],max.ab[2],min.ab[3],max.ab[3],min.ab[4],max.ab[4],min.ab[5],max.ab[5],min.ab[6],max.ab[6],min.ab[7],max.ab[7],min.ab[8],max.ab[8],min.ab[9],max.ab[9],min.ab[10],max.ab[10]))       tmp <- findinterval(p.ages, avec)     tt  <- table(tmp)     names(tt)<-c("14 19 years","20 24 years","25 34 years","35 44 years","45 54 years","55 59 years","60 64 years","65 74 years","75 84 years","85 years , over") return(tt) } 

what want 14 19 year olds grouped, 20 24 year olds grouped, , on. instead of desired 10 groups 20 18 groups. i've tried using cut() no avail. suggestions?

cut() correct function here. thing need specify break points of ranges, not beginning , ending intervals. measure assumed continuous.

#input data birthyear <- c(1987, 1995, 1994, 1981, 1994, 1989, 1985, 1987, 1996, 1981,      1980, 1994, 1996, 1983, 1949, 1988, 1998, 1977, 1967, 1968) agebreaks <- c(1864, 1929, 1939,1949,1954,1959,1969,1979,1989,1994,2000)  #cut < -cut(birthyear, agebreaks, include.lowest=t) #rename levels(a) <- rev(c("14 19 years","20 24 years","25 34 years",     "35 44 years","45 54 years","55 59 years","60 64 years",     "65 74 years","75 84 years","85 years , over"))  #table as.data.frame(table(a))  #result                    freq 1  85 years , on    0 2     75 84 years    0 3     65 74 years    1 4     60 64 years    0 5     55 59 years    0 6     45 54 years    2 7     35 44 years    1 8     25 34 years    9 9     20 24 years    3 10    14 19 years    4 

Comments

Popular posts from this blog

java - How to specify maven bin in eclipse maven plugin? -

single sign on - Logging into Plone site with credentials passed through HTTP -

php - Why does AJAX not process login form? -