簡體   English   中英

計算小於遞增值的值的數量

[英]Count number of values less than an increasing value

我有一個數據框,我想計算小於或等於 30 的值的數量,然后計算小於或等於 60、小於或等於 90 的值的數量……等等。 我可以使用sum(dat$values <= 30)迭代地執行此操作,但我想以某種方式自動執行此操作。

例子

set.seed(917)
dat <- as.data.frame(sample(0:2100,100,replace = F))
colnames(dat)[1] <- "values"

sum(dat$values <= 30)
sum(dat$values <= 60)
sum(dat$values <= 90)
sum(dat$values <= 120)
sum(dat$values <= 150)

Output 應該看起來像

  BinWidth TotalValuesLessThan
1       30                   1
2       60                   1
3       90                   2
4      120                   3
5      150                   4

我想讓 output 迭代 go 到BinWidth = 2100而無需使用sum(dat$values <= X) 70次。

只需創建您的垃圾箱並沿着它們應用。

BinWidth <- seq(30, 2100, by = 30)
TotalValueLessThan <- sapply(BinWidth, \(x) sum(dat$values <= x))

head(data.frame(BinWidth, TotalValueLessThan))
#>   BinWidth TotalValueLessThan
#> 1       30                  0
#> 2       60                  1
#> 3       90                  3
#> 4      120                  6
#> 5      150                  6
#> 6      180                 10

如果您使用的是 R < 4.1,請將\(x)更改為function(x)

我們可以使用 findInterval:

BinWidth <- seq(30, 150, 30)
data.frame(BinWidth, TotalLessThan = findInterval(BinWidth, sort(dat$values)))
##   BinWidth TotalLessThan
## 1       30             0
## 2       60             1
## 3       90             3
## 4      120             6
## 5      150             6

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM