如何计算超出一系列阈值的每列值的数量?
即:对于每个列,计算超过100,然后是超过150,再然后是超过...的值的数量,并将结果存储在数据帧中?
这段代码可以成功地执行一次,但我无法将每次迭代的结果存储在数据框中。 我还尝试了其他方法,例如:
即:对于每个列,计算超过100,然后是超过150,再然后是超过...的值的数量,并将结果存储在数据帧中?
# Reproductible data
# (Original data is daily streamflow values organized in columns per year)
set.seed(1234)
data = data.frame("1915" = runif(365, min = 60, max = 400),
"1916" = runif(365, min = 60, max = 400),
"1917" = runif(365, min = 60, max = 400))
# my code chunck
mymin = 75
mymax = 400
my step = 25
apply(data, 2, function (x) {
for(i in seq(mymin,mymax,mystep)) {
res = (sum(x > i)) # or nrow(data[x > i,])
return(res)
}
})
这段代码可以成功地执行一次,但我无法将每次迭代的结果存储在数据框中。 我还尝试了其他方法,例如:
for (i in 1:n){
seuil = seq(mymin, mymax, my step)
lapply(data, function(x) {
res [[i]] = nrow(data[ x > seuil[i], ])
return(res)}
})
这并不是非常有效的方式...
输出结果可能如下所示:
年份 | 高于75的n值 | 高于100的n值 | 高于...的n值 |
---|---|---|---|
1915 | 348 | 329 | ... |
1916 | 351 | 325 | ... |
... | ... | ... | ... |
感谢您的评论和建议 :)
我之前不熟悉`findInterval()`函数。如果我想按递增间隔检索越来越多的值,例如0:75、0:100、0:125等,是否可以使用相同的方法?
- Alex