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
Post a Comment