计数低于 30% 百分位数的记录

Count records below the 30% percentile

我有一个table喜欢

mtcars

我需要计算有多少模型低于 30% 百分位数。我发现那个百分位数。但我没有找到如何计算它们。

library(dplyr)
library(purrr)
mtcars %>% summarise(across(where(is.numeric), ~ quantile(.x, 0.30 ) ))  
mpg cyl   disp    hp drat    wt  qsec vs am gear carb
1 15.98   4 142.06 106.2 3.15 2.773 17.02  0  0    3    2

mtcars %>% 总结(跨越(其中(is.numeric),~分位数(.x,0.30)))

我们转换为逻辑向量 (.x < quantile(.x, 0.30)) 并使用 sum 获取计数 - 作为 TRUE -> 1 和 FALSE -> 0

library(dplyr)
mtcars %>% 
    summarise(across(where(is.numeric), ~ sum(.x < quantile(.x, 0.30 ) )))

-输出

   mpg cyl disp hp drat wt qsec vs am gear carb
1  10   0   10 10    9 10    9  0  0    0    7

在基础 R 中你可以这样做

num <- sapply(mtcars, is.numeric)
sapply(mtcars[num], \(x) sum(x < quantile(x, .3)))
# mpg  cyl disp   hp drat   wt qsec   vs   am gear carb 
#  10    0   10   10    9   10    9    0    0    0    7 

colSums(mtcars[num] < lapply(mtcars[num], quantile, .3))
# mpg  cyl disp   hp drat   wt qsec   vs   am gear carb 
#  10    0   10   10    9   10    9    0    0    0    7 

或(使用matrixStats::colQuantiles

colSums(mtcars[num] < as.list(matrixStats::colQuantiles(as.matrix(mtcars[num]), probs=.3)))
# mpg  cyl disp   hp drat   wt qsec   vs   am gear carb 
#  10    0   10   10    9   10    9    0    0    0    7