2017-02-20 8 views
0

私のデータセットは以下の通りです。私はRで上限と分が多すぎる行をフィルタリングする

k[(which.max(k$1st_metric))&(which.max(k$2nd_metric))&(which.max(k$3rd_metric))&(which.min(k$mpr)),] 

の代わりに3を返す以下のコマンドを使用して、全体のデータセットのうちMPRに、1st_metric 2nd_metric、3rd_metricおよび分値の最大値を持つ行をフィルタリングしようとしてい

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 

rowはデータセット全体を返します。私はここで間違って何をしていますか?あなたのコードが実際にあなたがコンソールに3 & 3 & 3 & 3入力した場合、それはあなたに#[1] TRUEを与える

k[3 & 3 & 3 & 3] 

として評価されて何

答えて

1

したがって、データフレーム全体を選択する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))), ] 
関連する問題