A propos de l'imporation d'une base de donné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

Axel leroix
Messages : 19
Enregistré le : 26 Fév 2007, 14:45

A propos de l'imporation d'une base de données

Messagepar Axel leroix » 14 Mai 2009, 09:23

Bonjour,

Je viens encore une fois vers vous parce que j’ai une question à poser au sujet de différentes procédures d’importation des données sur R.

Personnellement pour importer mes données je me suis basé sur le document synthétique et très claire de Lesnoff et Lancelot intitulé « Importations et exportations de données avec le logiciel R.

Dans ce document, et dans bien d’autres, plusieurs méthodes sont proposées selon que les données soient sous format excel, Access, txt…

Pour importer mes données j’ai opté pour le code suivant :

Code : Tout sélectionner

library(RODBC)
db <- "C:/Users/Axel/Desktop/estimation/data.xls"
channel <- odbcConnectExcel(xls.file = db)
data <- sqlFetch(channel = channel, sqtable = "Feuil1")
data
odbcClose(channel)
 

Parce que tous simplement mes données sont à la base en format Excel.

Par la suite jai encontré des problèmes (voir viewtopic.php?t=1970) dans l’extraction de mes données, alors je les ai convertis en format csv et j’ai utilisé le code suivant :

Code : Tout sélectionner

data<-read.csv2("data.csv", header = TRUE, sep = ";", quote="\"", dec=".")
attach(data)

Mes questions sont :

1) Dans le premier code ça signifie/implique quoi la commande :

odbcClose(channel)

2) Comment choisir le moyen « idéal » d’importer ses données ? Comme je vous ai dis moi j’ai passé du premier code d’importation (RODBC) au deuxième pour juste éviter un problème d’extraction de données que je n’ai pas réussi à résoudre !


Ma troisième question (et oui j’en plein moi les questions !)

3) Comment importer un fichier excel avec plusieurs feuilles de calcul ?

J’ai vu dans le document que je cite ci haut que sqlQuery qui permet d’importer une table ou une partie de celle-ci mais ca n’a pas fonctionné chez moi en tapant le code suivant :

Code : Tout sélectionner

library(RODBC)
db <- "C:/Users/Axel/Desktop/ estimation/data.xls"
channel <- odbcConnectExcel(xls.file = db)
data <- sqlQuery(channel = channel, query = "select*from [Feuil2$]")
data
odbcClose(channel)
Merci par avance de vos commantaires et réponses.

Samir Messad
Messages : 76
Enregistré le : 10 Jan 2005, 20:56

Messagepar Samir Messad » 14 Mai 2009, 14:48

Vous avez sûrement mieux à faire que de vous embêter avec 'RODBC'. Utiliser la fonction 'import' du package tdisplay (dans la section 'Packages' de GUR).
Cordialement.
Samir.

Axel leroix
Messages : 19
Enregistré le : 26 Fév 2007, 14:45

Messagepar Axel leroix » 14 Mai 2009, 20:00

Samir Messad a écrit :Vous avez sûrement mieux à faire que de vous embêter avec 'RODBC'. Utiliser la fonction 'import' du package tdisplay (dans la section 'Packages' de GUR).
Cordialement.
Samir.



C'est justement cela mon problème. Entre ces différentes formes et méthodes d'importation de données laquelle il faut choisir :?: Comment savoir que pour tel exercice le mieux est d'utiliser RODBC et pour tel exercice la fonction import ect...
A ce niveau je pense que les effets d'expérience peuvent jouer. Moi je suis un débutant.

Samir Messad
Messages : 76
Enregistré le : 10 Jan 2005, 20:56

Messagepar Samir Messad » 15 Mai 2009, 07:55

Axel leroix a écrit :
Samir Messad a écrit :Vous avez sûrement mieux à faire que de vous embêter avec 'RODBC'. Utiliser la fonction 'import' du package tdisplay (dans la section 'Packages' de GUR).
Cordialement.
Samir.



C'est justement cela mon problème. Entre ces différentes formes et méthodes d'importation de données laquelle il faut choisir :?: Comment savoir que pour tel exercice le mieux est d'utiliser RODBC et pour tel exercice la fonction import ect...
A ce niveau je pense que les effets d'expérience peuvent jouer. Moi je suis un débutant.


Si c'est un exercice que vous avez à résoudre, j'ai bien peur que le forum ne puisse rien pour vous.

Message du modérateur :
Les questions sont libres mais ne vous étonnez pas si les questions du type [...] "pouvez vous m'aider à faire mes exercices, que je dois rendre dans une semaine", etc, reçoivent peu ou pas de réponses.

Axel leroix
Messages : 19
Enregistré le : 26 Fév 2007, 14:45

Messagepar Axel leroix » 15 Mai 2009, 08:46

Bonjour,

Je n'ai pas crée ce post pour demander de m'aidez à faire un exercice que je doit rendre la semaine prochaine ! J'ai juste poser quelques questions comme tous le monde à propos de l'importation des données.

Je pense que le mot "exercice" a été mal compris dans le message que j'ai posté en réponse à Samir. Par le mot "exercice" je ne voulais pas dire un exercice/devoir sur le quel je travaille mais plutôt un "cas" dans l'absolu. SVP bien lire mon message de base (dans lequel il 3 questions) pour comprendre que je ne suis pas venu ici pour demander de faire des exercices à ma place. MERCI.

Matthieu Lesnoff
Messages : 120
Enregistré le : 29 Nov 2004, 12:41

Re: A propos de l'imporation d'une base de données

Messagepar Matthieu Lesnoff » 15 Mai 2009, 20:44

Axel leroix a écrit :
1) Dans le premier code ça signifie/implique quoi la commande :

odbcClose(channel)

2) Comment choisir le moyen « idéal » d’importer ses données ?

3) Comment importer un fichier excel avec plusieurs feuilles de calcul ?


quelques élements de réponse :

1- C'est de la cuisine interne. Avant de faire la connection avec un fichier, RODBC demande de créer un "channel", qu'il faut simplement refermer ensuite.

2- Il n'y a pas de moyen idéal. Toutes les solutions que vous avez évoquées marchent correctement s'il n'y a pas de problème dans le fichier (et en excluant les fichiers de très grosse taille, qui peuvent exploser le temps d'importation). C'est ensuite une question de préférence personnelle.

Si vous préférez importer des fichiers mdb, xls ou dbf, comme le dit Samir vous pouvez utiliser import() de tdisplay qui utilise RODBC et fait tout le travail pour vous. Nous sommes plusieurs à l'utiliser intensivement et nous n'avons jamais rencontré de problème (sauf s'il y a des problèmes dans le fichier de base, par exemple si la même feuille Excel contient plusieurs jeux de données, des graphiques et des tableaux croisés ...).

D'autres préfèrent importer des fichiers textes avec read.table, d'autre des fichiers csv, etc. Si vous rencontrez un problème d'importation, le conseil est de vérifier d'abord les données de base. Dans 99.9% des cas le problème vient de là.

3. En reprenant votre exemple, si vous voulez importer Feuil1 et Feuil2 ave RODBC, le code ci-dessous devrait marcher :

Code : Tout sélectionner

library(RODBC)
db <- "C:/Users/Axel/Desktop/estimation/data.xls"
channel <- odbcConnectExcel(xls.file = db)
tab1 <- sqlFetch(channel = channel, sqtable = "Feuil1")
tab2 <- sqlFetch(channel = channel, sqtable = "Feuil2")
odbcClose(channel)
# checking
head(tab1)
head(tab2)


Avec import() :

Code : Tout sélectionner

db <- "C:/Users/Axel/Desktop/estimation/data.xls"
tab1 <- import(db = db, tab = "Feuil1")
tab2 <- import(db = db, tab = "Feuil2")
# checking
head(tab1)
head(tab2)


Si vous voulez importer automatiquement l'ensemble des feuilles existant dans le fichier xls (sans savoir avant quelles sont ces feuilles), alors il faut faire un peu de programmation en amont.

M.


Retourner vers « Questions en cours »

Qui est en ligne

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