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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Septembre 2012
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Meurthe et Moselle (Lorraine)

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

    Informations forums :
    Inscription : Septembre 2012
    Messages : 118
    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 confirmé
    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
    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 confirmé
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Septembre 2012
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Meurthe et Moselle (Lorraine)

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

    Informations forums :
    Inscription : Septembre 2012
    Messages : 118
    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 confirmé
    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
    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