筛选R中最大值和最小值过多的行
我的数据集如下所示筛选R中最大值和最小值过多的行,r,filter,max,min,R,Filter,Max,Min,我的数据集如下所示 a_metric b_metric c_metric tl_metric mpr 1 1.0079123 0.4121975 1.0510727 0.5280035 -0.03690215 2 -0.3479917 -0.3185338 -0.3652249 -0.1644014 0.01175352 3 1.7148652 2.7669706 1.8156309 0.6885553 -0.05121204 ra
a_metric b_metric c_metric tl_metric mpr
1 1.0079123 0.4121975 1.0510727 0.5280035 -0.03690215
2 -0.3479917 -0.3185338 -0.3652249 -0.1644014 0.01175352
3 1.7148652 2.7669706 1.8156309 0.6885553 -0.05121204
rate 1st_metric 2nd_metric 3rd_metric 4th_metric IDX
1 -0.7771414 0.2600359 0.3368508 0.3989317 0.4422435 1
2 0.1782411 -0.2824974 -0.3050651 -0.3225591 -0.3318396 2
3 -0.2663647 2.7014838 2.7858352 2.8452738 2.8524606 3
我尝试使用下面的命令在整个数据集中过滤mpr中第一个度量、第二个度量、第三个度量和最小值的最大值行
k[(which.max(k$1st_metric))&(which.max(k$2nd_metric))&(which.max(k$3rd_metric))&(which.min(k$mpr)),]
它不返回第三行,而是返回整个数据集。我在这里做错了什么?您的代码实际计算结果是什么
k[3 & 3 & 3 & 3]
如果您在控制台中键入3&3&3&3&3
,它将为您提供#[1]TRUE
因此它返回选择整个数据帧的k[TRUE]
您需要的是计算结果为k[3,]
我们可以用
k[which(k$X1st_metric == max(k$X1st_metric) & k$X2nd_metric == max(k$X2nd_metric)
& k$X3rd_metric == max(k$X3rd_metric) & k$mpr == min(k$mpr)), ]
# a_metric b_metric c_metric tl_metric mpr rate
#3 1.714865 2.766971 1.815631 0.6885553 -0.05121204 -0.2663647
# X1st_metric X2nd_metric X3rd_metric X4th_metric IDX
#3 2.701484 2.785835 2.845274 2.852461 3
或者通过修改代码
k[unique(c(which.max(k$X1st_metric), which.max(k$X2nd_metric) ,
which.max(k$X3rd_metric) , which.min(k$mpr))), ]