r - 计算每列高于 R 中阈值范围的值的数量
问题描述
如何计算高于一系列阈值的每列值的数量?
即:为每一列计算大于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)}
})
哪个不太好用...
输出将类似于:
年 | n 值高于 75 | n 值大于 100 | n 值高于... |
---|---|---|---|
1915年 | 348 | 329 | ... |
1916年 | 351 | 325 | ... |
... | ... | ... | ... |
感谢您的意见和建议:)
解决方案
你可以试试 :
vals <- seq(mymin,mymax,mystep)
mat <- sapply(vals, function(x) sapply(data, function(y) sum(y > x)))
colnames(mat) <- paste0('values_above_', vals)
mat
# values_above_75 values_above_100 values_above_125 values_above_150 values_above_175
#X1915 348 329 303 276 235
#X1916 351 325 305 277 252
#X1917 345 315 291 260 236
# values_above_200 values_above_225 values_above_250 values_above_275 values_above_300
#X1915 212 186 153 126 104
#X1916 226 204 181 146 118
#X1917 208 186 161 133 99
# values_above_325 values_above_350 values_above_375 values_above_400
#X1915 74 49 28 0
#X1916 92 62 40 0
#X1917 81 60 34 0
推荐阅读
- spring - 交易/提交后的番石榴事件总线发布
- xml - Arxml中有命名规则吗?
- bash - 为什么我的脚本在通过 ssh 执行命令时返回分段错误?
- excel - 无法理解 VBA 代码 .Range(.Cells(1, 1), .Cells(.Cells(.Rows.Count, 1).End(xlUp).Row, 1))
- pdf - 将文件修改时间戳附加到pdf?
- javascript - How to create a form for comments with the ability of dynamically adding them to the list?
- javascript - JavaScript download a file if prompt password is true
- json - Swift value(forKeyPath keyPath: String) not available at Linux
- javascript - Angular + RxJs + Webpack not treeshaking RxJs operators and observables
- javascript - How to run Google cloud scheduler every 15 minutes from my Firebase functions