我正在尝试找到一种方法,可以根据另一列中的值在矩阵中查找列的最小值。假设我的矩阵如下所示:
A B
3 1.2
3 3.4
3 0.7
4 4.5
4 4.9
5 0.1
5 0.4
6 5
我希望在共享A中相同数字的每一列中找到B的“局部最大值”。
因此,我想获得一个新的变量C,它看起来像:
A B C
3 1.2 0.7
3 3.4 0.7
3 0.7 0.7
4 4.5 4.5
4 4.9 4.5
5 0.1 0.1
5 0.4 0.1
6 5 5
可以看到,C中的值是B与A中具有相同值的条目的最小值。
for(i in 1:length(data)){
if (A[i]==A[i+1])
else C <- min(B[i])
}
像上面这样的for循环可能会成功,但会占用大量计算资源并且非常昂贵。我想知道在创建具有最小值的列时是否存在更简单的方法。谢谢!
有两种方法可以解决此问题。最简单的是:
> data$C <- ave(data$B, data$A, FUN = min)
> d
A B C
1 3 1.2 0.7
2 3 3.4 0.7
3 3 0.7 0.7
4 4 4.5 4.5
5 4 4.9 4.5
6 5 0.1 0.1
7 5 0.4 0.1
8 6 5.0 5.0
另一个是“拆分应用合并”策略。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句