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 :

extraction de variables , tri et création


Sujet :

R

  1. #1
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2013
    Messages : 22
    Points : 14
    Points
    14
    Par défaut extraction de variables , tri et création
    Bonjour,
    Je suis une débutante de R, et je suis completement perdue . J'ai trois questions.
    J'ai deux tables distantes, table1 et table2, elles ont des variables en commun.
    Question1: comment faire pour trier chacune de ces tables selon une ou plusieurs variables.
    Question2: comment faire pour rassembler les deux tables sans que les variables en commun ne se répètent, par exemple:
    table1: X Y Z table2: X W Q : je veux une table finale à partir de ces deux tables telle que: X Y Z W Q
    Question3: sachant que mes tables ont beaucoup de variables et d'observations, comment faire pour créer une nouvelle table à partir d'une de mes tables en ne gardant seulement que les variables qui m'intéressent sans passer par la procédure de suppression ( car le nombre de variables à conserver est nettement inférieur à celui qui sera supprimé).
    J'espère vraiment que vous pourriez m'aider

  2. #2
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 24
    Points : 39
    Points
    39
    Par défaut
    J'essaye de trouver des solutions à tes premières questions, mais j'ai un peu de mal à comprendre la première.

    en attendant pour la troisième c'est assez simple, une fois ton data frame obtenu (appelons-le tab), tu fais simplement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tab[,c("var1", "var2")]
    pour ne garder que les variables var1 et var2.

    exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    tab1 <- data.frame(id = c(1:4), note1 = c(1,3,5,6), note2 = c(3,5,8,9), sexe = c("homme","homme", "femme", "homme"))
    tab1
    tab1[, c("id", "note1", "sexe"]
    dans le second cas, la variable note2 a disparu.

    edit: la réponse à la seconde question.

    Il faut utiliser la fonction merge, avec l'option all.x = TRUE et all.y = TRUE pour conserver les lignes et les colonnes qui ne sont pas dans les deux tableaux. attention, la présence d'un identifiant unique (ou d'une combinaison unique des variables communes) est indispensable, faute de quoi deux individus qui partagent les même caractéristiques dans les variables utilisées pour merger seront comptés comme un seul. à noter que le by n'est pas indispensable, ça fonctionne aussi sans, R prend les noms de colonnes partagés par les deux tableaux initiaux.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    tab1 <- data.frame(id = c(1:4), note1 = c(1,3,5,6), note2 = c(3,5,8,9), sexe = c("homme","homme", "femme", "homme"))
    tab2 <- data.frame(id = c(5:8), note3 = c(5,4,5,6), note2 = c(2,7,6,7), sexe = c("homme","femme", "homme", "femme"))
    tab <- merge(tab1, tab2, by = c("id", "note2", "sexe"), all.x = TRUE, all.y = TRUE)
    tab

  3. #3
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2013
    Messages : 22
    Points : 14
    Points
    14
    Par défaut
    Bonjour,
    Merci pour ta réponse, ça marche nikel pour les variables à sauvgarder.
    Alors pour ma 1ere question je voulais dire, comment trier une table selon une variable ou plusieurs variables par exemple les trier selon id et nom.
    Pour la question ou je dois faire le merge, ile me spécifie une erreur, est ce que ça peut etre dû au fait que mes tables n'ont pas le même nombre d'observations??
    J'ai encore une petite question:
    Comment faire pour supprimer des valeurs manquantes d'une variables dans une tabl?
    suposant ma table tab
    id x y z w
    1 1 5 2 3
    2 na 8 5 7
    3 5 5 8 na
    4 1 2 0 na
    Je veux supprimer que les valeurs manquantes de la variable W sans que celle de X , en gros je veux obtenir une table comme suit:
    id x y z w
    1 1 5 2 3
    2 na 8 5 7

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 24
    Points : 39
    Points
    39
    Par défaut
    alors pour ce qui est du tri j'avoue être un peu coincé, mais j'aurais tendance à penser que tu te complique peut-être la vie. Si tu dispose d'un tableau assez petit, et que tu veux obtenir un tri visuel de ta table, excel le fait très simplement. Si ce n'est pas pour visualiser les données mais pour autre chose, peut-être que j'aurai une idée si tu en dis un peu plus sur le but de ce tri.
    Pour le merge, peux-tu poster le code utilisé et le message d'erreur? en tout cas, de mon côté ça fonctionne très bien avec des tables ayant des nombres différents d'observations, le problème n'est pas là.

    Pour la dernière question, si je comprends bien tu veux supprimer l'ensemble des observations pour laquelle la variable w est manquante.
    En ce cas tu fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tab2 <- tab[!is.na(tab$w),]
    et ça devrait fonctionner. Pour expliquer: tab2 est ta nouvelle table sans les observations où W = NA, is.na(tab$w) renvoie TRUE si la valeur de W est NA, on met donc une négation devant (le !), et les crochets signifient qu'on retient dans l'objet tab les lignes satisfaisant la condition avant la virgule (ici donc celles pour qui w est différent de NA), et les colonnes satisfaisant la condition après la virgule (ici toutes).

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 24
    Points : 39
    Points
    39
    Par défaut
    Pour ma part, j'avais utilisé la fonction merge pour de très grosses tables (plusieurs milliers d'observations et centaines de variables), et cela prenait beaucoup de temps (plusieurs minutes). Donc peut-être que tout simplement, si tu as beaucoup de variables, R a beaucoup de calculs à faire ce qui prend du temps. Si ça continue à crasher, j'ai deux idées à suggérer:
    -la version barbare consistant à tenter la commande avec une machine plus puissante pour voir si ça crash toujours
    -la version un peu plus fine consisterait à réaliser ton tri de variables avant de merger les tables pour en diminuer la taille, ce qui devrait alléger la tâche.

    à tester, en revanche, comme je l'ai dit plus haut, normalement il n'y a aucun problème à avoir un nombre de lignes ou de colonnes différents pour merger les tables, l'essentiel étant de ne pas oublier les options all.x = TRUE et all.y = TRUE pour tout conserver.

    Pour la nécessité d'un tri "comme sur SAS", je ne connais pas bien ce logiciel, mais je crois qu'effectivement ce n'est pas nécessaire, puisque merge, ce qui compte c'est d'avoir un identifiant unique pour chaque observation (qui peut être généré par la combinaison de plusieurs variables si tu es sûr qu'elle est unique), afin de ne pas en fusionner plusieurs.

  6. #6
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2013
    Messages : 22
    Points : 14
    Points
    14
    Par défaut
    Merci pour ta réponse!
    J'ai réussi a trouver le hic pour le merge, une histoire de majuscule et minuscule, comme R les distingue (contrairement à SAS avec lequel j'ai l'habitude de bosser).
    Là, je suis face à un autre problème, je vais essayer de m'expliquer du mieux que je peux:
    Je souhaite créer une nouvelle variable à partir d'une variable déjà existante, mais la condition est assez particulière :
    ma variable d'origine a des observations comme ceci MFCDTA_0080E6RESI2NS1ATTE3M1TAT et MTEDTA_0120E6RESI2NS1ATTE3M1TAT
    La première partie, c'est la partie commune avec la différenciation FC ou TE, la deuxième partie est unique pour chaque observation.
    Ce que je veux faire, c'est que ma nouvelle variable ne comporte que les observations avec FC dans l'ancienne variable.
    J'espère m'être fait comprendre.
    Merci beaucoup pour l'aide.

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 24
    Points : 39
    Points
    39
    Par défaut
    Je n'ai pas le temps de chercher la solution à ce dernier problème maintenant, mais si tu veux maximiser tes chances, je te suggère plutôt de passer la discussion en résolu et d'en ouvrir une nouvelle avec ton nouveau problème. Au passage, cherche un peu sur le forum avant, il y a des chances que la question ait déjà été traitée.

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

Discussions similaires

  1. [XL-2002] Reset des variables globales lié à création d'OleObjects ?
    Par zigmo dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 10/04/2011, 17h03
  2. aide fonction tri heapsort (création du tas)
    Par Invité dans le forum C
    Réponses: 6
    Dernier message: 24/11/2009, 00h27
  3. Variables de contexte - Création et utilisation
    Par babou59 dans le forum Développement de jobs
    Réponses: 0
    Dernier message: 13/03/2009, 17h13
  4. [XSLT] [PHP] extraction des variable de xsl avec php
    Par anis_el_madani dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 14/04/2007, 23h20
  5. Extraction de variables dans une chaîne
    Par Spack dans le forum Général Python
    Réponses: 6
    Dernier message: 20/05/2006, 19h42

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