R: Veri Kümesindeki En Yüksek Noktayı Bulma

0

Soru

R programlama dilini kullanıyorum. Aşağıdaki verilere sahip olduğumu varsayalım:

set.seed(123)

a = rnorm(100000,10,10)
b = rnorm(100000,10,10)

my_data = data.frame(a,b)

plot(my_data$a, my_data$b)

enter image description here

Bu verilere baktığınızda:

 head(my_data)
          a         b
1  4.395244 12.649934
2  7.698225 28.307475
3 25.587083  9.406217
4 10.705084  9.467906
5 11.292877 14.379042
6 27.150650 23.374490

Sorum Şu: Bu veri kümesinin böyle bir nokta içerip içermediğini öğrenmenin bir yolu var mı

  • "a" nın tüm değerleri bu noktanın a koordinatından küçüktür VE
  • "b" nin tüm değerleri bu noktanın b koordinatından daha küçüktür

Bu veri kümesinin "genel maksimum nokta" içerip içermediğini öğrenmenin bir yolu var mı?

enter image description here

Örneğin, yukarıdaki kırmızı nokta gibi. Çoğu durumda, en büyük a koordinatına sahip noktanın mutlaka en büyük b koordinatına sahip olmayacağını ve bunun tersini görerek böyle bir nokta bulmanın pek mümkün olmadığını biliyorum:

#row with max value of "a"
which(my_data == max(my_data$a), arr.ind=TRUE)

       row col
[1,] 23102   1

#row with max value of "b"
 which(my_data == max(my_data$b), arr.ind=TRUE)
      row col
[1,] 2071   2

#display row with max value of "a"
> my_data[23102,]
             a        b
23102 53.22815 4.500006

#display row with max value of "b"
> my_data[2071,]
            a       b
2071 15.85992 52.0609

Gördüğümüz gibi, "a" nın maksimum değerine sahip satır "b"nin maksimum değerini içermiyor.

Teşekkürler!

Not: Gerçek dünyada, büyük verilerde noktalar "çakıştığı" için "genel maksimum noktaları" bulmak genellikle imkansızdır (farklı satırlar farklı sütunların maksimumlarını içerir). Optimizasyon problemleri bağlamında, birkaç nokta genellikle bu kriterleri karşılayabilir ve hepsi uygun kabul edilir - bu noktalara "baskın olmayan" denir ve "Pareto Sınırında" (yeşil çizgi)bulunduğu söylenir.:

enter image description here

data-manipulation data-visualization r
2021-11-23 03:50:41
1

En iyi cevabı

1

İşte bir yol. Satır numarası 0 olduğundan, hem a hem de b'nin maksimum olduğu böyle bir nokta yoktur.

library(dplyr)

my_data %>%
  filter(if_all(.fns = ~.x == max(.x)))
# [1] a b
# <0 rows> (or 0-length row.names)
2021-11-23 04:00:22

@ www: cevabınız için teşekkür ederiz! Maksatlı olarak maksimum bir nokta eklediğim bir örnek yapmaya çalıştım ve işe yaradı!
stats555

kitaplık (dplyr) a = rnorm(100000,10,10) b = rnorm(100000,10,10) my_data = veri.çerçeve (a, b) a = rnorm(1,100,1) b = rnorm(1,100,1) my_data_1 = veri.çerçeve (a,b) final_data = rbind (my_data, my_data_1) final_data % > % filtre (if_all (.fns=~.x = = maks (.x)))
stats555

Diğer dillerde

Bu sayfa diğer dillerde

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................