我有我的桌子(输入)
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)
谢谢!对不起,如果这个主题不是新的,但我找不到答案!
使用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)
这是一个完整的解决方案,包括您的示例数据:
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)。