Convertir des entêtes compliquées

Postez ici vos questions, réponses, commentaires ou suggestions - Les sujets seront ultérieurement répartis dans les archives par les modérateurs

Modérateur : Groupe des modérateurs

margot julien
Messages : 46
Enregistré le : 28 Nov 2017, 12:10

Convertir des entêtes compliquées

Messagepar margot julien » 14 Avr 2021, 08:39

Bonjour,

j'aimerais convertir des entêtes de fichier mais j'ai plusieurs soucis détaillés ci-dessous.

- dans l'image (Je suis désolée, je n'arrive pas à insérer une image ici mais j'ai aussi posé ma question sur un autre forum et vous pouvez-voir l'image ici: https://www.developpez.net/forums/d2107938/general-developpement/algorithme-mathematiques/statistiques-data-mining/r/appeler-fichiers-automatiquement-transformer-entetes-plusieurs-etages-variable-unique/), vous pouvez voir le tableau final tout en haut "fichier final" que j'aimerais obtenir (évidement c'est un exemple et j'ai énormément de lignes, colonnes et fichiers) et aussi 3 cas de fichiers de base que je peux avoir.

- étape 1) tout d’abord j'aimerais supprimer les lignes 1 et 2 de chaque fichier

- étape2) ensuite mon souci c'est que mes noms de colonnes s'étalent sur 5 lignes et j'aimerais les modifier, donc si on regarde "cas1" sur l'image, je dois transformer ce qu'il y a dans les lignes 3 à 7 (ligne 3:"var", ligne 4: "iable", ligne 5: "champ", ligne 6: rien", ligne 7: "1" en une seule ligne et un seul mot "variable1" et pareil pour les 4 autres colonnes.

- mon autre souci c'est que parfois j'ai du texte en ligne 6, voir dans le cas 2 de l'image ("texte à supprimer" en colonne C du cas 2). Il faudrait donc supprimer le texte de cette ligne (il peu y avoir du texte dans plusieurs colonnes) avant même de faire l'étape 2

- un autre souci qui m'embête aussi c'est que parfois le nom des variables sur plusieurs colonnes peut changer (voir cas3), par exemple "variable1" que je veux dans mon fichier final peut avoir plusieurs nom dans les fichiers d'origine comme dans cas 1 et cas 3 ici.

Donc l'idée serait de faire une boucle mais je ne sais pas comment faire pour avoir quelque chose comme:

aller chercher les fichiers xls dans un dossier, si dans le fichier 1 et dans la colonne 1 / lignes 3 à 7 on a (ligne 3:"var", ligne 4: "iable", ligne 5: "champ", ligne 6: rien", ligne 7: "1") (=cas 1) alors remplacer en une seule ligne/colonne qui s’appellerait "variable1";

mais si dans colonne 1 du fichier de départ on a pas ça dans les lignes 3 à 7 et que l'on a (ligne 3:"variable", ligne 4: "du", ligne 5: "champ", ligne 6: rien", ligne 7: "1") (=cas 3), alors écrire aussi "variable1"

ensuite pareil pour la variable en colonne 2, 3, 4..

puis réécrire le fichier1 dans le dossier

puis pareil pour le fichier2 et le fichier3, etc..

-étape 3) supprimer la 6ème ligne "ligne à supprimer"

Si quelqu'un à une solution/idée de script pour faire ça, ça m'aiderait beaucoup.
Merci par avance,
M.


Mickael Canouil
Messages : 1315
Enregistré le : 04 Avr 2011, 08:53
Contact :

Re: Convertir des entêtes compliquées

Messagepar Mickael Canouil » 14 Avr 2021, 10:51

Bonjour,

En effet, {tidyxl} peut détecter les formats non rectangulaires des tableaux, mais il a ses limites.

si vous voulez une réponse plus complète, il va falloir fournir un exemple reproductible:

Par exemple, en copiant le contenu de votre fichier Excel ou en copiant le résultat de la ligne de commande R :

Code : Tout sélectionner

library(readxl)
dput(read_xlsx("mon_fichier.xlsx"))


Cordialement,
Mickaël
mickael.canouil.fr | rlille.fr

margot julien
Messages : 46
Enregistré le : 28 Nov 2017, 12:10

Re: Convertir des entêtes compliquées

Messagepar margot julien » 14 Avr 2021, 18:17

Mickael Canouil a écrit :Bonjour,

En effet, {tidyxl} peut détecter les formats non rectangulaires des tableaux, mais il a ses limites.

si vous voulez une réponse plus complète, il va falloir fournir un exemple reproductible:

Par exemple, en copiant le contenu de votre fichier Excel ou en copiant le résultat de la ligne de commande R :

Code : Tout sélectionner

library(readxl)
dput(read_xlsx("mon_fichier.xlsx")) 


Cordialement,


Bonsoir,

merci beaucoup. Je vais essayer et je reviendrai vers vous si je ne trouve pas.

Bien à vous,
M.

margot julien
Messages : 46
Enregistré le : 28 Nov 2017, 12:10

Re: Convertir des entêtes compliquées

Messagepar margot julien » 14 Avr 2021, 18:18


Bonsoir,

merci pour ces pistes et liens.

Bien à vous,
M.


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Google [Bot] et 1 invité