r语言 - 统计小于指定数值的汇总代码



我有一个简单的数据集(我已经命名为'summary'),其中包括一个数值列。我想创建代码来汇总少于特定值的行数,例如5、10、20、30等。

下面是一些数据:

dput(summary[1:50,])
structure(list(S2S_Mins = c(NA, 101.15, 107.43, 205.5, 48.07, 
34.9, 195.05, 17.58, 41.63, 74.27, 21.05, 32.27, 51.18, 17.88, 
32.52, 26.98, 32.03, 40.03, 50.73, 54.38, 33.17, 19.97, 23.57, 
41.82, 17.7, 20.9, 24.65, 16.48, 27.97, 94.47, 23.13, 22.63, 
25.5, 43.8, 46.47, 33.98, 17.28, 27.57, 45.58, 34.52, 32.75, 
35.92, 28.62, 17.48, 40.55, 38.8, 34.97, 41.95, 36.88, 21.58)), class = c("tbl_df", 
"tbl", "data.frame"), row.names = c(NA, -50L))

我可以遍历并像这样计算行数:

sum(summary$S2S_Mins < 5, na.rm = TRUE)
sum(summary$S2S_Mins < 10, na.rm = TRUE)
sum(summary$S2S_Mins < 20, na.rm = TRUE)
sum(summary$S2S_Mins < 30, na.rm = TRUE)
sum(summary$S2S_Mins < 60, na.rm = TRUE)

但是我想要一个汇总函数(或类似的东西),它将把它放在一个表中,如下所示:

TimeCategory  Count
Less5      0
Less10     1
Less20     9
Less30     17
Less60     36

我已经尝试使用dplyr与总结/总结功能,但我得到错误:

#first try - gives a (1 x 0) tibble 
summary %>% summarize(Less5 = nrow(S2S_Mins < 5), Less10 = nrow(S2S_Mins < 10))

#second try - gives error saying "unused argument (S2S_Mins < 5)"
summary %>% summarize(Less5 = n(S2S_Mins < 5), Less10 = n(S2S_Mins < 10))

如有任何提示,将不胜感激。谢谢。

我们可以用sapply

v1 <- c(5, 10, 20, 30, 60)
out <- sapply(v1, function(x) sum(summary$S2S_Mins < x, na.rm = TRUE))
names(out) <- paste0("Less", v1)
stack(out)[2:1]

输出

ind values
1  Less5      0
2 Less10      0
3 Less20      7
4 Less30     19
5 Less60     43

最新更新