【发布时间】:2021-05-13 17:51:05
【问题描述】:
如何计算每列超过一系列阈值的值的数量?
即:为每一列计算大于 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)}
})
这确实不太好......
输出类似于:
| year | n value above 75 | n values above 100 | n value above ... |
|---|---|---|---|
| 1915 | 348 | 329 | ... |
| 1916 | 351 | 325 | ... |
| ... | ... | ... | ... |
感谢您的 cmets 和建议 :)
【问题讨论】: