Group value in range r

后端 未结 3 1597
北恋
北恋 2020-12-18 04:22

I have my table(input)

name   value
Rob    35
Helen  20
Sergey 16
Linn   40
Elena  23
Mary   40

And I want to count how many of my users is

相关标签:
3条回答
  • 2020-12-18 04:43

    Here is a full solution, including your sample data:

    df <- data.frame(name=c("r", "h", "s", "l", "e", "m"), value=c(35,20,16,40,23,40))
    # get categories
    df$groups <- cut(df$value, breaks=c(0,21,30,Inf))
    
    # calculate group counts:
    table(cut(df$value, breaks=c(0,21,30,Inf)))
    

    If Inf is a little too extreme, you can use max(df$value) instead.

    0 讨论(0)
  • 2020-12-18 04:46

    Using dplyr, you can create (mutate) a new column indicating in which interval the value belongs (using cut) and then use this column to group your values and count (n()) how many of them you have:

    library(dplyr)
    df %>% mutate(cuts = cut(value, c(0, 20, 30, Inf))) %>% 
      group_by(cuts) %>% 
      summarize(n=n())
    
    #     cuts     n
    #     (fctr) (int)
    # 1   (0,20]     2
    # 2  (20,30]     1
    # 3 (30,Inf]     3
    
    0 讨论(0)
  • 2020-12-18 04:49

    We can use

    library(data.table)
    setDT(input)[,.(num=.N) ,
      .(range=cut(value, breaks = c(0,20, 30, Inf), labels = c("0-20", "21-30", "30-")))]
    
    0 讨论(0)
提交回复
热议问题