[英]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.