范围 r 中的组值

Sma*_*ell 7 r

我有我的桌子(输入)

name   value
Rob    35
Helen  20
Sergey 16
Linn   40
Elena  23
Mary   40
Run Code Online (Sandbox Code Playgroud)

我想计算有多少用户在自定义范围内(0-20,21-30,>30)(输出):

range  num
0-20   2
21-30  1
30-    3 
Run Code Online (Sandbox Code Playgroud)

谢谢!对不起,如果这个主题不是新的,但我找不到答案!

ztl*_*ztl 7

使用dplyr,您可以创建 ( mutate) 一个新列,指示值所属的区间(使用cut),然后使用此列对您的值进行分组并计算 ( n()) 您拥有的值的数量:

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
Run Code Online (Sandbox Code Playgroud)


lmo*_*lmo 6

这是一个完整的解决方案,包括您的示例数据:

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)))
Run Code Online (Sandbox Code Playgroud)

如果 Inf 有点过于极端,您可以使用它max(df$value)