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 :
Read.table me fait l'erreur classique :
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
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 > 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
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
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
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 data<-read.table("table.csv",sep=",",header=TRUE,nrows=34158)
Le truc à m'expliquer c'est ça :
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)
Et pourquoi rbind fonctionne sans erreur?
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
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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 > temp<-rbind(data,data2)
Merci de votre aide!
Partager