Idenya mirip dengan yang ini
. Anda dapat membuat dua kolom tambahan menggunakan pmin
sebuah pmax
untuk mengelompokkan sebagai berikut:
Sebuah data.table
larutan. Tetapi jika Anda tidak menginginkan data.table, maka Anda masih dapat menggunakan ide tersebut. Namun, sangat tidak mungkin Anda mendapatkan solusi data.table lebih cepat dari hanya dengan kode R.
# assuming your data.frame is DF
require(data.table)
DT <- data.table(DF)
# get min of V1,V2 on one column and max on other (for grouping)
DT[, `:=`(id1=pmin(V1, V2), id2=pmax(V1, V2))]
# get max of V3
DT.OUT <- DT[, .SD[which.max(V3), ], by=list(id1, id2)]
# remove the id1 and id2 columns
DT.OUT[, c("id1", "id2") := NULL]
# V1 V2 V3
# 1: 2 1 666
# 2: 100 102 23131
# 3: 10 19 124444
# 4: 10 15 1244
# 5: 100 110 23