Selection multiple sur plusieurs colonnes

Postez ici vos questions, réponses, commentaires ou suggestions - Les sujets seront ultérieurement répartis dans les archives par les modérateurs

Modérateur : Groupe des modérateurs

Alexis Cossé
Messages : 5
Enregistré le : 19 Juil 2018, 09:30

Selection multiple sur plusieurs colonnes

Messagepar Alexis Cossé » 24 Juil 2018, 13:24

Bonjour à tous,

Je vous expose le problème que je rencontre pour la manipulation et l'exploitation du data frame suivant :

Code : Tout sélectionner

     angle_1  angle_2
1      0.1    -31.4
2      0.1    -31.4
3    -31.4    -20.2
4    -31.4    -20.2
5    -13.2     34.4
6    -13.2     34.4
7     37.1     15.2
8     37.1     15.2
9     39.29   -23.0
10    39.29   -23.0
11    39.29   -23.0
12    39.29   -23.0
13    -2.5     -0.6
14    40.9    -22.6
15    40.9    -22.6
16    39.4     -1.8
17    39.4     -1.8
18    39.4     -1.9
19    39.4     -1.9
20    39.4     -1.9

A noter : angle_1 et angle_2 correspondent aux angles primaire et secondaire que peut décrire un même appareil, c'est-à-dire les mouvements longitudinaux (angle_1) et latéraux (angle_2) que peut décrire cet appareil dans l’espace (un exemple du manège qui tourne sur deux axes x et y, pourra peut-être vous aider à visualiser cet appareil).

Pour l'angle_1 je souhaiterais pouvoir :
1) afficher les deux (ou trois) valeurs d'angle primaire qui apparaissent le plus souvent et calculer le pourcentage d'apparition associé. D'après mon exemple, j'attendrais le résultat suivant :
[1] 39.29 pourcentage : 0,25
[2] 39.4 pourcentage : 0,20

Je pense pouvoir m'en sortir avec cette ligne de code, mais je ne sait pas comment faire apparaitre les deux (ou trois) valeurs...

Code : Tout sélectionner

table(df$angle_1)/nrow(df)*100


Pour l'angle_2, je souhaiterais pouvoir :
2) afficher les deux valeurs d'angle secondaire qui apparaissent le plus souvent, parmi les angles primaires retenus dans l'étape précédentes et calculer leur pourcentage d'apparition associé. De plus, j'aimerais que les deux valeurs d'angle (primaire et secondaire) apparaissent sur une même ligne avec le pourcentage associé. D'après mon exemple, j'attendrais le résultats suivant :
[1] 39.29 / -1.8 pourcentage : 0.10
[2] 39.29 / -1.9 pourcentage : 0.15
[3] 39.4 / -23.0 pourcentage : 0.25

Je ne sais pas du tout si cette manipulation est réalisable...
Quoiqu'il en soit, j'espère que mes explications seront suffisamment claires pour vous lecteurs.

Je vous remercie par avance, ne serait-ce que d'avoir pris le temps de lire mon message.

Pierre-Yves Berrard
Messages : 1029
Enregistré le : 12 Jan 2016, 23:30

Re: Selection multiple sur plusieurs colonnes

Messagepar Pierre-Yves Berrard » 24 Juil 2018, 19:30

Code : Tout sélectionner

df <-
  data.frame(
    angle_1 = c(.1, .1, rep(-31.4, 2), rep(-13.2, 2), rep(37.1, 2), rep(39.29, 4), -2.5, 40.9, 40.9, rep(39.4, 5)),
    angle_2 = c(-31.4, -31.4, -20.2, -20.2, 34.4, 34.4, 15.2, 15.2, rep(-23, 4), -.6, -22.6, -22.6, -1.8, -1.8, rep(-1.9, 3))
)

Code : Tout sélectionner

library(dplyr)

top_angle_1 <-
  df %>%
  count(angle_1) %>%
  arrange(desc(n))

res <-
  df %>%
  count(angle_1, angle_2) %>%
  mutate(prop = n / nrow(df)) %>%
  semi_join(top_angle_1[1:2, ], by = "angle_1") # top_angle_1[1:n, ] pour les n premiers angles 1

Code : Tout sélectionner

res
# A tibble: 3 x 4
#  angle_1 angle_2     n  prop
#    <dbl>   <dbl> <int> <dbl>
# 1    39.3   -23       4  0.2
# 2    39.4    -1.9     3  0.15
# 3    39.4    -1.8     2  0.1
PY

Alexis Cossé
Messages : 5
Enregistré le : 19 Juil 2018, 09:30

Re: Selection multiple sur plusieurs colonnes

Messagepar Alexis Cossé » 26 Juil 2018, 07:27

Bonjour Pierre-Yves,

Je tiens à vous remercier pour cette réponse.
Votre code fonctionne très bien dans mon script.

Bonne journée à vous,

Alexis


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Google [Bot] et 1 invité