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 :

Subset, selection de lignes et colonnes et transformation en NA


Sujet :

R

  1. #1
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2017
    Messages : 80
    Points : 34
    Points
    34
    Par défaut Subset, selection de lignes et colonnes et transformation en NA
    Bonjour,

    Je travaille sur un fichier à 5000 lignes et plus de 50 colonnes et je fais des transformations dessus mais parfois je suis amenée à revenir sur le fichier de base. Jusqu'à maintenant je fais le "nettoyage" via Excel (suppression de colonnes, lignes, certaines variétés, ...) mais je me rends compte que c'est problématique car je dois revenir modifier mon fichier à chaque fois, j'aimerais donc tout faire avec R et si quelqu'un arrive à trouver une façon avec R de faire tout ça d'un coup ça serait magique

    Admettons dans un fichier exemple que j'ai 5 colonnes : variete (3 variétés qui reviennent plus ou moins), lieu (avec 5 lieux différents possibles), annee (5 années), taille_fleurs (chiffres en cm) et temperature.

    Je veux creer un subset où je réalise les 4 opérations suivantes :

    R garde uniquement:
    - les variétés qui ont au moins 4 valeurs de tailles de fleurs (donc où le nom de la variété va revenir au moins 4 fois sur toutes les lignes de la colonne variete)

    - les lignes pour 3 lieux A, B, C (sur 5 lieux présents dans la colonne "lieu") donc je surprime les lignes correspondantes aux lieux D et E

    J'ai aussi des valeurs à -9999 et j'aimerais les remplacer par des "NA" dans la colonne temperature

    Finalement dans ce subset j'aimerais aussi supprimer toutes les lignes correspondant à l'année 1994 (1994 dans la colonne année)

    et puis stocker ce subset dans un fichier csv.

    Je joins un fichier exemple, est-ce que vous pourriez me donner des lignes de codes pour réaliser ce subset avec cet exemple afin que je puisse le faire avec mon vrai fichier de 5000 lignes?
    Merci par avance.
    Cordialement.
    Fichiers attachés Fichiers attachés

  2. #2
    Membre actif
    Inscrit en
    Novembre 2003
    Messages
    543
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 543
    Points : 239
    Points
    239
    Par défaut
    Bonjour,

    Pour le principe
    Si tu as une table T1 avec tes données, tu peux en extraire un sous-ensemble avec la fonction subset() en faisant par exemple
    T2 <- subset(T1, V1 == A & V2 %in% B)où V1 et V2 sont des variables, A est une modalité de V1 ou une variable dont la valeur est une des modalités de V1, B est un vecteur de modalités de V2, etc.
    On peut mettre autant de conditions qu'on veut, reliées par les connecteurs & ou |. Ici, les deux conditions sont reliées par le connecteur &.
    À la place de %in%, tu peux utiliser is.element(V2,B). Cette seconde écriture permet de metttre des conditions négatives !is.element(V2,B).

    Dans ton exemple, tu pourrais écrire par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    T2 <- subset(T1, Annee != 1994 & !is.element(Lieu,c('D','E')))
    T2$Temperature <- ifelse(T2$Temperature == -9999,NA,T2$Temperature)
    write.table(T2,file='T2.csv',sep=';',dec=',')
    Je n'ai pas compris la 1ère condition que tu énonces. C'est pourquoi elle ne figure pas dans ce bout de programme.

  3. #3
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2017
    Messages : 80
    Points : 34
    Points
    34
    Par défaut
    Bonjour,

    merci pour cette réponse rapide.

    Je me perds un peu entre les variables, modalités, vecteur.. j'ai encore beaucoup à apprendre, pour être sûre d'avoir bien compris, si je reprends votre script et vos explications cela veut dire que vos lignes de script correspondent à:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    123 T2 <- subset(T1, Annee != 1994 & !is.element(Lieu,c('D','E')))
    T2$Temperature <- ifelse(T2$Temperature == -9999,NA,T2$Temperature)
    write.table(T2,file='T2.csv',sep=';',dec=',')
    la ligne 1 de votre code --> R va garder uniquement les lignes pour 3 lieux A, B, C (sur 5 lieux présents dans la colonne "lieu") et donc avec la fonction "¨!is.element" il supprim les lignes correspondantes au lieu D et E et supprimer toutes les lignes correspondant à l'année 1994 (1994 dans la colonne année) grâce à la fonction "Annee!".

    ligne 2 --> Dans la colonne température, R va remplacer les valeurs à -9999 par des "NA". Si jamais j'ai une dizaine de colonnes et que je veux que R me ramplace tous les -9999 de toutes les colonnes par NA est-ce qu'il suffit de remplacer T2$temperature par le nom du fichier de base?

    ligne 3 --> R va stocker ce subset dans un fichier csv.

    Pour la première condition que je veux appliquer, désolée j'avais peut-être mal expliqué, je tente de ré-expliquer:

    je vais faire des regressions de la variété en fonction de la taille des fleurs pour cet exemple et j'aimerais tester et ne garder que les variétés dont le nom revient au minimum 4 fois dans le fichier donc avec au moins 4 fois le nom de chaque variété dans la colonne variété. Je ne sais pas si c'est plus clair? Donc supprimer les variétés qui n'apparaissent que 1,2 ou 3 fois dans la colonne variété.

    Merci par avance.

Discussions similaires

  1. Transformer les lignes en colonnes
    Par metalcoyote dans le forum Autres Logiciels
    Réponses: 2
    Dernier message: 23/02/2007, 09h45
  2. Transformer ligne en colonne
    Par delphine_lep dans le forum Langage SQL
    Réponses: 2
    Dernier message: 03/10/2006, 14h15
  3. TRANSFORM et PIVOT? Transformer les lignes en colonnes
    Par capitaine dans le forum Access
    Réponses: 1
    Dernier message: 12/07/2006, 11h53
  4. transformation lignes en colonne
    Par marti dans le forum Langage SQL
    Réponses: 5
    Dernier message: 16/06/2006, 17h13
  5. Requête : Transformer lignes en colonnes
    Par bleu_ciel dans le forum Access
    Réponses: 6
    Dernier message: 27/05/2006, 21h26

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