私は、各列から3つのトップ値(注文事項)を選択し、対応する行番号を保存する必要がある大きなデータフレームを持っています。各列からn個のトップ値を選択し、対応する行を保存するにはどうすればよいですか?
names<- c("t1","t10","t11","t2","t3","t4","t5","t6","t7","t8","t9")
values1 <- c(2,3.1,4.5,5.1,6.5,7.1,8.5,9.11,10.1,11.8,12.3)
values2 <- c(1,3.1,3,5.1,6.5,7.1,8.5,9.11,10.1,12,12)
mydf<- data.frame(names,values1,values2)
#@Juan Bosco has suggested the followings which is great but gets confuses in this case where I have similar values...
idx <- lapply(2:3, function(col_index) {
max_values <- sort(mydf[[col_index]], decreasing = T)[1:3]
sapply(max_values, function(one_value){
as.numeric(rownames(mydf[mydf[[col_index]] == one_value, ]))
})
})
どのようにこの問題に取り組むことができますか?
おかげ
名前列に「最高値」をどのように定義しますか?残りの部分は数値であるので、 'max'を使うことができます。 –
行番号を追跡できる限り、その列を削除できます。しかし、「max」は単一の値を与えます。私はnトップのものが欲しい。 @Juan Bosco – Jack