R: Găsiți Punctul Maxim într-un set de Date

0

Problema

Eu sunt, folosind R limbaj de programare. Presupunem că avem următoarele date:

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

Când te uiți la aceste date:

 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

Întrebarea mea este: există o modalitate de a afla dacă acest set de date conține un punct astfel încât

  • toate valorile de "o" sunt mai mici decât a-și coordona de la acest punct ȘI
  • toate valorile de "b" sunt mai mici decât b-coordonatele acestui punct

Există un astfel de mod de a afla dacă acest set de date conține un nivel global "punctul maxim"?

enter image description here

De exemplu, ca punct rosu de mai sus. Știu că în cele mai multe cazuri, este puțin probabil pentru a găsi un astfel de moment, văzând că punctul cu cea mai mare o-coordonarea nu va avea neapărat cel mai mare b-coordonează și vice-versa:

#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

După cum putem vedea, de rând cu max valoare de "o" nu conține max valoarea "b".

Multumesc!!!

Notă: În lumea reală, este de multe ori imposibil de a găsi "global maxim de puncte", ca într-o mare de date de puncte de "suprapunere" (diferite rânduri conțin maxime de diferite coloane). În contextul problemelor de optimizare, mai multe puncte puteți întâlni adesea acest criteriile și sunt considerate adecvate - aceste puncte sunt numite "non-dominat" și a spus să fie situat pe "Frontiera Pareto" (linia verde):

enter image description here

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

Cel mai bun răspuns

1

Aici este o modalitate. Deoarece numărul de rând este 0, nu există nici un astfel de punct cu ambele a și b sunt maxime.

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: vă mulțumesc pentru răspuns! Am încercat să fac un exemplu în care am intenționat să adăugați un punct maxim si a mers!
stats555

biblioteca(dplyr) o = rnorm(100000,10,10) b = rnorm(100000,10,10) my_data = de date.cadru(a,b) = rnorm(1,100,1) b = rnorm(1,100,1) my_data_1 = de date.cadru(a,b) final_data = rbind(my_data, my_data_1) final_data %>% filtru(if_all(.fns = ~.x == max(.x)))
stats555

În alte limbi

Această pagină este în alte limbi

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