R语言 比较两个不同长度的值列表

dwthyt8l  于 2022-12-06  发布在  其他
关注(0)|答案(3)|浏览(211)

我有一长串1到100之间的随机数,我想计算一下其中有多少个大于10、20、30等

x <- c(sample(1:100, 500, replace = T))
y <- seq(0,100, by = 10)

我正在寻找这个返回一个输出,如;
| 总计|10个|二十个|三十|四十|五十个|
| - -|- -|- -|- -|- -|- -|
| 计数|七个|十三|十七岁|二十八人|四十二|
其中Count是大于Total的x值的数量(每个y值)
到目前为止,我试过

Count = ifelse(x > y, 1, 0)

但是,这将为X的500个值中的每个值返回一个二进制1,0返回值列表
如果你能帮我

91zkwejq

91zkwejq1#

这个答案假定你在寻找区间,而不是寻找大于给定计数阈值的数字的累积和。
cut + table在以下情况下非常有用:

table(cut(x, breaks = y))

  (0,10]  (10,20]  (20,30]  (30,40]  (40,50]  (50,60]  (60,70]  (70,80]  (80,90] (90,100] 
      51       66       36       44       54       49       55       46       58       41

findInterval + table将给予相同的结果

table(findInterval(x, y,  left.open = TRUE))

数据类型

set.seed(505)
x <- c(sample(1:100, 500, replace = T))
y <- seq(0,100, by = 10)
djmepvbi

djmepvbi2#

如果我没理解错的话,这可能行得通:

x <- c(sample(1:100, 500, replace = T))
y <- seq(0,100, by = 10)

is_bigger_than <- function(y){
  data.frame(y, n = sum(x > y,na.rm = TRUE))
}
    
purrr::map_df(y,is_bigger_than)

     y   n
1    0 500
2   10 450
3   20 403
4   30 359
5   40 305
6   50 264
7   60 201
8   70 155
9   80 100
10  90  52
11 100   0
kninwzqo

kninwzqo3#

对于base R,这是一种方法

rbind(Total = y, Count = rowSums(sapply(x, ">", y)))
      [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11]
Total    0   10   20   30   40   50   60   70   80    90   100
Count  500  444  381  329  279  241  198  150  104    52     0

相关问题