R (data.table) group data by custom range (for example, -18, 18-25, …, 65+)

前端 未结 2 1497
太阳男子
太阳男子 2021-01-12 03:08

I can\'t find a solution in R (using data.table) to group data by a custom range (for example, -18, 18-25, ..., 65+) not by a single value.

What I\'m using right now

2条回答
  •  情话喂你
    2021-01-12 03:36

    @jdharrison is right: cut(...) is the way to go.

    library(data.table)
    # create sample - you have this already
    set.seed(1)   # for reproducibility
    DT <- data.table(age=sample(15:70,1000,replace=TRUE),
                     value=rpois(1000,10))
    
    # you start here...
    breaks <- c(0,18,25,35,45,65,Inf)
    DT[,list(mean=mean(value)),by=list(age=cut(age,breaks=breaks))][order(age)]
    #         age      mean
    # 1:   (0,18] 10.000000
    # 2:  (18,25]  9.579365
    # 3:  (25,35] 10.158192
    # 4:  (35,45]  9.775510
    # 5:  (45,65]  9.969697
    # 6: (65,Inf] 10.141414
    

提交回复
热议问题