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 :

Faire une boucle pour supprimer des colonnes dans une liste de fichiers et écrire les fichiers


Sujet :

R

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    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
    Par défaut Faire une boucle pour supprimer des colonnes dans une liste de fichiers et écrire les fichiers
    Bonjour,

    j'aimerais supprimer des colonnes qui apparaissent en trop dans certains de mes fichiers dans un dossier "TESTin" et ensuite écrire les fichiers propres dans un fichier "TESTout". J'ai beaucoup de fichiers et il y a des erreurs dans certains mais pas dans d'autres, donc le but est de faire cela automatiquement. Ensuite je bind ces fichiers par noms de colonnes.

    Je m'explique:

    dans mon exemple, j'ai 2 fichiers que je veux réunir nommés "ww97_test_40_z1.xlsx" et ""ww97_test2_40_z1.xlsx".
    Pour réunir ces 2 fichiers par noms de colonnes identiques, j'ai un code qui fonctionne mais seulement si les colonnes ont des noms identiques donc ici j'ai un souci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    df_base <- read_excel(listZ1Y97[1])
    df_base <- mutate_all(df_base, as.character)
    for (i in c(2:length(listZ1Y97))) {
       df_join <- read_excel(listZ1Y97[i])
       df_join <- mutate_all(df_join, as.character)
       df_base <- rbind(df_base,df_join)
    }
    df_base
    View(df_base)
    write.csv2(df_base, "D:\\FinalDataModel20210820\\TESTout.csv")
    Avant de faire tourner ce code, j'aimerais donc supprimer automatiquement pour tous les fichiers de la liste dessous les colonnes "colToDelete1" et "colToDelete2" lorsqu'elles sont présentes (par exemple ici dans ww97_test_40_z1.xlsx).
    Ensuite j'ai un autre problème, dans certains fichiers j'ai des colonnes avec les noms correctes: "HauteurPLante", "HauteurPLanteDroite", et "HauteurPLanteGauche" comme dans "ww97_test2_40_z1.xlsx" dans cet exemple, mais dans d'autres fichiers il y a un problème, les noms des colonnes "HauteurPLanteDroite", et "HauteurPLanteGauche" ont été écrit "HauteurPlante" donc j'ai 3 fois des colonnes qui s'appellent "HauteurPlante" et j'aimerais pour tous les fichiers supprimer les colonnes qui portent les noms "HauteurPLante" ou"HauteurPLanteDroite" ou "HauteurPLanteGauche" pour solutionner ce problème (ou alors une deuxième option serait de dire à R que si il voit une colonne nommée "HauteurPlante" une fois il ne fait rien mais si il voit une deuxième fois il remplace par "HauteurPLanteDroite" et une troisième fois par "HauteurPlanteGauche" afin que je garde ces colonnes mais je crois que ça serait un peu trop compliqué).

    Ensuite j'aimerais écrire les fichiers propres dans "TESTout", pour pouvoir réunir les fichier avec "bind" avec mon code présenté dessus.
    Pouvez-vous m'aider à faire ça automatiquement svp?
    Merci par avance.

    voici les 2 fichiers Excel en pièce-jointe et voici mon code pour le moment:

    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    #Import libraries
    library(stringr)
    library(readxl)
    library(WriteXLS)
    library(dataframes2xls)
    library(dplyr)
    library(varhandle)
    library(prettyR) #describe
     
    options(scipen = 999)  
     
     
    setwd ("D:\\FinalDataModel20210820\\in")
     
    ####year 97 - list files
    listZ1Y97 <- list.files("D:\\FinalDataModel20210820\\TESTin",
                            pattern = glob2rx("ww97*_z1.xlsx"))
    print(listZ1Y97)
     
     
     
    #bind the files by col names and write it in TESTOUT:
    df_base <- read_excel(listZ1Y97[1])
    df_base <- mutate_all(df_base, as.character)
    for (i in c(2:length(listZ1Y97))) {
       df_join <- read_excel(listZ1Y97[i])
       df_join <- mutate_all(df_join, as.character)
       df_base <- rbind(df_base,df_join)
    }
    df_base
    View(df_base)
    write.csv2(df_base, "D:\\FinalDataModel20210820\\TESTout.csv"
    Fichiers attachés Fichiers attachés

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

Discussions similaires

  1. Une boucle pour supprimer des lignes ?
    Par eldoir dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 08/04/2012, 18h43
  2. Réponses: 7
    Dernier message: 24/01/2012, 18h55
  3. [XL-2007] Créer une macro pour supprimer des onglets dans un autre classeur
    Par nicosd54 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 08/03/2011, 10h01
  4. Réponses: 7
    Dernier message: 09/02/2009, 14h28
  5. Requête pour supprimer des doublons dans une table
    Par nomade333 dans le forum Contribuez
    Réponses: 0
    Dernier message: 30/03/2008, 12h48

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