IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

R Discussion :

une requête sur une matrice


Sujet :

R

  1. #1
    Membre du Club
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Septembre 2012
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2012
    Messages : 118
    Points : 64
    Points
    64
    Par défaut une requête sur une matrice
    Bonjour,
    j'ai une matrice qui contient plusieurs lignes et une seule colonne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    > g
          [,1]
     [1,]    4
     [2,]  138
     [3,]   58
     [4,]   77
     [5,]   38
     [6,]   18
     [7,]   20
     [8,]   37
     [9,]   58
    [10,]   37
    [11,]   21
    [12,]   40
    [13,]   18
    [14,]   17
    [15,]  227
    [16,]   20
    [17,]   17
    [18,]   16
    Je voudrais obtenir une matrice de deux lignes :
    *la premiere contient les données ayant des valeurs > 20.
    *la deuxieme contient les numéros des lignes correspondant à ces données.

    Merci d'avance.

  2. #2
    Membre averti
    Homme Profil pro
    Inscrit en
    Août 2007
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2007
    Messages : 125
    Points : 339
    Points
    339
    Par défaut
    Bonsoir,

    • Pour grouper deux vecteurs et en faire une matrice de deux lignes, il faut utiliser rbind.
    • Pour obtenir la liste des "données ayant des valeurs > 20", il faut faire g[g>20].
    • Pour obtenir la liste des "numéros des lignes correspondant à ces données", il faut faire which(g>20).

    Avec ces trois points, je vous laisse chercher la solution. Si vous ne trouvez pas, je peux vous aider.

    Bonne continuation!

  3. #3
    Membre du Club
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Septembre 2012
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2012
    Messages : 118
    Points : 64
    Points
    64
    Par défaut
    Bonsoir
    Merci pour votre réponse
    Oui j'ai trouvé la sol, en fait elle est simple et facile
    En premier lieu j'ai changé les données initiales d'une matrice à un tab normal puisqu'elle ne contient qu'une seule colonne.
    Puis j'ai essayé avec ce code et ça bien marché
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    a1=NULL
    z=a1[a1>20]
    z1=which(a1>20)
    e=rbind(z1,z)
    J'ai reçu un affichage comme suit, dont la 1ère ligne contient les numéros des données et la 2ème contient la valeur des données :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
       [,1] [,2] [,3] [,4]
    z1   10   12   18   20
    z    35   21   21  901
    C'est la solution que j'ai trouvé, si vous avez une meilleur veuillez me la fournir.

    Cordialement B.H

  4. #4
    Membre averti
    Homme Profil pro
    Inscrit en
    Août 2007
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2007
    Messages : 125
    Points : 339
    Points
    339
    Par défaut
    Bonsoir,
    Oui, on peut même le faire en une ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    rbind(g[g>20],which(g>20))
    Example:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    g <- matrix(round(runif(5)*50))
    e <- rbind(g[g>20],which(g>20))
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    > g
         [,1]
    [1,]   41
    [2,]   11
    [3,]   49
    [4,]   33
    [5,]    1
    > e
         [,1] [,2] [,3]
    [1,]   41   49   33
    [2,]    1    3    4
    Dans votre code, je ne comprends pas le but de votre première ligne (pour moi, elle produit un object vide):
    A++

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Remplacer une requête sur une class par une valeur constante ?
    Par Lillie CHARLOTTE dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 02/06/2015, 09h59
  2. [WD18] Metre une colonne d'une Table sur une ligne d'une autre Table
    Par Totophe2 dans le forum WinDev
    Réponses: 2
    Dernier message: 22/11/2013, 12h58
  3. [Toutes versions] Faire en VBA une requête sur une requête paramétrée
    Par guidav dans le forum VBA Access
    Réponses: 3
    Dernier message: 15/02/2012, 17h10
  4. Réponses: 1
    Dernier message: 30/08/2011, 09h53
  5. Tri d'une requête sur une valeur ou une autre
    Par mims1664 dans le forum Requêtes
    Réponses: 2
    Dernier message: 21/08/2009, 17h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo