Je désire importer un fichier en colonnes mais, hélas, avec un nombre de colonnes non constant.
Sur 100000 ligne, la plupart du temps j'ai 8 colonnes.
Code : Tout sélectionner
AGP 11150080 2 10APR2011 10330325 10310301 AGPD .
AGP 11150127 2 10APR2011 10150356 10370301 AGPD .
AGP 11150164 1 10APR2011 10040082 10310204 AGPD .
AGP 11150175 1 10APR2011 10150020 10310285 AGPD .
Mais parfois le fichier a le mauvais gout de varier en ajoutant une information en 7ème position.
Code : Tout sélectionner
AGP 11390157 2 25SEP2011 10270334 11030312 AGPD .
AGP 11390221 2 25SEP2011 10370012 11030325 AGPD .
AGP7 11410013 1 11OCT2011 10460383 10400748 AGP77 .
AGP7 11410018 2 11OCT2011 10460383 10400748 R4 AGP77 14MAY2012
AGP7 11410020 2 11OCT2011 10460383 10400748 M2 AGP77 28MAY2012
AGP7 11410093 2 11OCT2011 10460354 10460494 R9 AGP77 07AUG2013
Sans surprise si je tente une lecture de base j'obtiens un message d'erreur.
.> pedi<-read.table("XXX_identif.new")
Erreur dans scan(file = file, what = what, sep = sep, quote = quote, dec = dec, :
la ligne 198 n'avait pas 8 éléments
Est-il possible avec R d'obtenir gain de cause ?
J'ai tenté de prédigérer le fichier avec cut (les fichiers sont sur une station Linux) pour ne conserver que les 6 premières colonnes (ce sont elles qui m'intéressent), mais vu que les colonnes sont espacées par des espaces et non des tabulations, le résultat est décevant.
Je ne vois pas comment demander à R de se rendre compte qu'il doit lire 9 colonnes quand il n'y en n'a que 8.
Est-il possible de lui imposer un format de lecture comme en Fortran en lui disant que le premier champ est à lire sur les colonnes 1 à 4, le second sur les colonnes 6 à 13 et ainsi de suite ? Ce serait LA solution mais je ne sais pas la mettre en œuvre.
J'ai aussi tenté d'ouvrir le fichier avec un tableur (gnumeric sous Linux, mais Excel ne fait pas mieux sous Windows) avec des colonnes de largeur fixe (ce que je voudrais faire avec R). Et là j'ai un étrange souci : les dates. La colonne 4 est une date et les tableurs utilisés ont le mauvais gout de convertir en date les chaines de caractère avec les mois SEP et OCT et de laisser intactes toutes les autres. Ce qui rend pénible l'exploitation du fichier.
Merci de votre aide.