Bonjour,

Je suis statisticien et utilisateur averti de R. Je sais utiliser read.table, et en particulier, je sais me servir de sep=",". J'ai un problème avec read.table que je serais enchanté de résoudre! Si quelqu'un peut aider...

J'ai un (gros) fichier table.csv qui possède 176 variables et 48 036 lignes, plus 1 ligne pour les noms de variables. Voici les 3 premières lignes :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
ID,VERIF,SURVEYCOMPLETEDDATE,QDESIGN,RESP_GENDER,RESP_AGE,QAGE,Q1,Q1REC,Q3,Q3BIS,Q4_1,Q5_1,Q5_2,Q5_3,Q7,Q8,Q9,Q10,Q11BIS,Q12,Q13,Q13EX_99,Q13BIS,Q14,Q15BIS_1,Q15BISEX_99,Q15TER,Q151_1,Q151EX_99,Q152,Q153_1,Q153EX_99,Q154,Q16_1,Q16EX_1,Q16BIS_1,Q16BISEX_3,Q16BISEX_2,Q171_1,Q171EX_3,Q171EX_2,Q172_1,Q172EX_4,Q172EX_2,Q172EX_3,QTRADEOFF_1,QTRADEOFF_2,QTRADEOFF_3,QTRADEOFF_4,Q18,Q19,Q20,Q22,Q23,Q24,Q25,Q26,Q27_1,Q27_2,Q27_3,Q27_4,Q27_5,Q27_6,Q28_1,Q28_2,Q29,Q30,Q31,Q32_1,Q32_3,Q32_2,Q32_4,Q33,Q34,Q6,Q16EX_2,Q16BISEX_4,Q17BIS_1,Q17BIS_2,Q17BIS_3,Q17BIS_4,Q17BIS_5,Q17BIS_6,Q17BIS_7,Q17BIS_8,Q17BIS_9,Q17BIS_10,Q21B_1,Q21B_2,Q21B_3,Q21B_4,Q21B_5,Q21B_6,Q21B_7,Q21B_8,Q21B_9,HCAL_REGION3_5CODES,HCAL_STDHOUSEHOLDSIZE,Z_CM_HOH_INSEE_OCCUPATION_5BREAK,Z_CM_MKTSIZE_5CODES,ICAL_INDHOH,HOH_AGE,HOH_SEX,q11,qtownLabel,q23_6_other,q33_6_other,q34_6_other,q21b_9_other,resp,respagence,numlog,nummerge,Agence,logement,_surface,_distance_emploi__Reference,_dist__emploi_voiture,_dist_emploi_trspt_commun,dist_centre,dist_centre_voiture,_dist_centre_commun,dans_le_quartier,source,_isolation,prix__cart,Agence1,maison,surfini,surface,distempref,distempvoi,distemptco,distcentref,distcentvoi,distcenttco,electricite,fuel,gaz,isolplus,isolmoins,commerce,ecole,prix,prixlog,choix,poids,identgroupe,discenttco,agerep,agepr,hommerep,hommepr,revenus,uc,nivvie,dip1,dip2,dip3,dip4,dip5,dip6,pondmen,pondind,habmaison,habcommerce,habecole,habisolplus,habisolmoins,habenfant,habelec,habfioul,habgaz,habautre,quartnvie
14402638,1,2 Nov 2010 20:17:18,1,2,41,4,1,1,1,,2,0,2,1,1,5,5,14,,2,40,0,,2,,,,500,0,,,,,60,0,40,0,,10,0,0,20,0,0,0,3,1,2,3,3,5,1,2,1,1,2,1,2,9,9,9,9,9,1,0,1,1,1,1,1,2,2,1,1,1,0,0,3,3,1,1,2,1,1,1,1,2,1,0,1,1,1,0,0,0,0,1,2,3,1,1,41,2,77700,Paris,,,,,1,11,1,111,1,1,9,6,6,7,11,5,2,3,1,3,7,1,0,40,48,35,42,45.5,60,66,48,0,0,1,1,0,1,0,500,650,0,0.0833333333,144026381,,41,41,0,0,999999,1.5,999999,0,0,0,0,1,0,1,2,0,1,1,1,0,0,1,0,0,0,9
14402638,1,2 Nov 2010 20:17:18,1,2,41,4,1,1,1,,2,0,2,1,1,5,5,14,,2,40,0,,2,,,,500,0,,,,,60,0,40,0,,10,0,0,20,0,0,0,3,1,2,3,3,5,1,2,1,1,2,1,2,9,9,9,9,9,1,0,1,1,1,1,1,2,2,1,1,1,0,0,3,3,1,1,2,1,1,1,1,2,1,0,1,1,1,0,0,0,0,1,2,3,1,1,41,2,77700,Paris,,,,,1,11,2,112,1,1,9,11,4,2,3,4,5,2,3,2,2,1,0,40,48,60,60,48,20,20,22,1,0,0,0,1,0,1,500,400,0,0.0833333333,144026381,,41,41,0,0,999999,1.5,999999,0,0,0,0,1,0,1,2,0,1,1,1,0,0,1,0,0,0,9
Read.table me fait l'erreur classique :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
> data<-read.table("table.csv",sep=",",header=TRUE)
Erreur dans scan(file, what, nmax, sep, dec, quote, skip, nlines, na.strings,  :
la ligne 34159 n'avait pas 176 éléments
Pourtant la ligne contient bien le même nombre de colonnes, aucun caractère particulier, pas plus pas moins de données manquantes que la ligne d'avant... L'extrait du fichier .csv, +/- 2 lignes :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
16260990,1,1 Nov 2010 17:43:28,2704,2,22,2,1,1,2,2,1,0,0,0,9,,6,1,,2,95,0,,4,600,0,,,,,,,,80,0,30,0,,,0,1,,0,1,0,2,3,2,1,3,3,2,2,1,2,2,1,5,9,9,9,9,9,1,0,1,1,1,1,1,1,1,7,2,1,0,0,4,3,,,3,2,2,3,4,1,0,1,1,0,1,1,0,0,0,1,1,5,5,1,22,2,92340,Paris,,,,,2704,27042,2,270422,2,1,2,4,3,1,2,5,3,3,3,3,6,2,0,95,80.75,25,30,30,15,16.5,13.5,1,0,0,1,0,1,0,600,720,0,0.0833333333,162609902,,22,22,0,0,6000,0.8,7500,0,0,0,0,0,1,1,1,0,1,1,1,0,1,1,0,0,0,1
16260990,1,1 Nov 2010 17:43:28,2704,2,22,2,1,1,2,2,1,0,0,0,9,,6,1,,2,95,0,,4,600,0,,,,,,,,80,0,30,0,,,0,1,,0,1,0,2,3,2,1,3,3,2,2,1,2,2,1,5,9,9,9,9,9,1,0,1,1,1,1,1,1,1,7,2,1,0,0,4,3,,,3,2,2,3,4,1,0,1,1,0,1,1,0,0,0,1,1,5,5,1,22,2,92340,Paris,,,,,2704,27042,3,270423,2,2,6,4,3,1,7,7,1,2,1,1,5,2,1,95,99.75,25,30,30,40,52,28,0,0,1,0,0,0,1,600,660,1,0.0833333333,162609902,,22,22,0,0,6000,0.8,7500,0,0,0,0,0,1,1,1,0,1,1,1,0,1,1,0,0,0,1
16260990,1,1 Nov 2010 17:43:28,2704,2,22,2,1,1,2,2,1,0,0,0,9,,6,1,,2,95,0,,4,600,0,,,,,,,,80,0,30,0,,,0,1,,0,1,0,2,3,2,1,3,3,2,2,1,2,2,1,5,9,9,9,9,9,1,0,1,1,1,1,1,1,1,7,2,1,0,0,4,3,,,3,2,2,3,4,1,0,1,1,0,1,1,0,0,0,1,1,5,5,1,22,2,92340,Paris,,,,,2704,27043,1,270431,3,2,7,5,1,3,7,7,1,2,2,1,3,3,1,95,104.5,30,30,30,40,52,28,0,1,0,0,0,0,1,600,540,0,0.0833333333,162609903,,22,22,0,0,6000,0.8,7500,0,0,0,0,0,1,1,1,0,1,1,1,0,1,1,0,0,0,1
16260990,1,1 Nov 2010 17:43:28,2704,2,22,2,1,1,2,2,1,0,0,0,9,,6,1,,2,95,0,,4,600,0,,,,,,,,80,0,30,0,,,0,1,,0,1,0,2,3,2,1,3,3,2,2,1,2,2,1,5,9,9,9,9,9,1,0,1,1,1,1,1,1,1,7,2,1,0,0,4,3,,,3,2,2,3,4,1,0,1,1,0,1,1,0,0,0,1,1,5,5,1,22,2,92340,Paris,,,,,2704,27043,2,270432,3,1,5,3,7,6,7,7,1,4,1,3,4,3,0,95,95,20,30,30,40,52,28,0,0,1,1,0,1,1,600,600,1,0.0833333333,162609903,,22,22,0,0,6000,0.8,7500,0,0,0,0,0,1,1,1,0,1,1,1,0,1,1,0,0,0,1
16260990,1,1 Nov 2010 17:43:28,2704,2,22,2,1,1,2,2,1,0,0,0,9,,6,1,,2,95,0,,4,600,0,,,,,,,,80,0,30,0,,,0,1,,0,1,0,2,3,2,1,3,3,2,2,1,2,2,1,5,9,9,9,9,9,1,0,1,1,1,1,1,1,1,7,2,1,0,0,4,3,,,3,2,2,3,4,1,0,1,1,0,1,1,0,0,0,1,1,5,5,1,22,2,92340,Paris,,,,,2704,27043,3,270433,3,2,3,6,5,5,7,7,1,1,3,2,7,3,1,95,85.5,35,30,30,40,52,28,1,0,0,0,1,0,0,600,780,0,0.0833333333,162609903,,22,22,0,0,6000,0.8,7500,0,0,0,0,0,1,1,1,0,1,1,1,0,1,1,0,0,0,1
Je ne me laisse pas abattre, je m'arrête à la 34 159è ligne :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
data<-read.table("table.csv",sep=",",header=TRUE,nrows=34158)
puis j'enlève manuellement les 34 158 premières lignes du fichier table.csv (en laissant les noms de variable), et je sauvegarde en table2.csv. Et je recommence :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
> data2<-read.table("table2.csv",sep=",",header=TRUE)
Erreur dans scan(file, what, nmax, sep, dec, quote, skip, nlines, na.strings,  : 
  la ligne 260 n'avait pas 176 éléments
> data2<-read.table("table2.csv",sep=",",header=TRUE,nrows=259)
Le truc à m'expliquer c'est ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
> dim(data)
[1] 34158   176
> dim(data2)
[1] 259 176
Et pourquoi rbind fonctionne sans erreur?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
> temp<-rbind(data,data2)
Bien sûr, je pourrais faire à la main et fusionner les tables data, data2, data3... data543 par rbind à la fin, mais déjà ça prend du temps, ensuite c'est frustrant, et de toute façon je fais un export depuis SAS avec des données risquant d'être réactualisées et donc, si ça pouvait être straight forward, ça m'arrangerait.

Merci de votre aide!