connection ODBC

R et systèmes d'exploitation, configuration de R, gestion de la mémoire, construction des packages, interfaces entre R et d'autres logiciels, éditeurs pour R

Modérateur : Groupe des modérateurs

hénin virginie
Messages : 14
Enregistré le : 18 Avr 2006, 15:11

connection ODBC

Messagepar hénin virginie » 11 Juil 2006, 15:22

Bonjour j'ai une data frame dans R et je me demande si je peux exporter celle ci dans une table access
Merci

par exemple ma data frame est :
> tab_inter_fin
Campagne Date Variable observés simulés
2314 E1_2004_LGBI 1 Azomes 48.2 63.93
2315 E2_2004_LGBI 1 Azomes 40.4 65.99
5612 G1_2005 1 Azomes 60.3 44.83
5712 G1_2005 2 Azomes 41.9 45.22
5812 G1_2005 3 Azomes 35.4 43.28
5912 G1_2005 4 Azomes 31.1 57.55
5613 G2_2005 1 Azomes 80.4 51.20
5713 G2_2005 2 Azomes 59.3 48.89
5813 G2_2005 3 Azomes 38.2 47.71
5913 G2_2005 4 Azomes 34.2 57.58


Merci beaucoup

Renaud Lancelot
Messages : 2484
Enregistré le : 16 Déc 2004, 08:01
Contact :

Messagepar Renaud Lancelot » 11 Juil 2006, 16:24

Réponse courte: oui.

Réponse énervante: voir le package RODBC, et en particulier les fonctions odbcConnectAccess et sqlSave.

Exemple: renseignement d'une base pré-existante (y compris structure des tables) nommée ici Laser. Dans cet exemple, les tables sont vidées (fonction sqlClear) avant d'être renseignées:

Code : Tout sélectionner

BeefToLaser <- function(tab, laser){
  on.exit(odbcCloseAll())
  listobj <- objects(name = 1)
  n <- match(tab, table = listobj)
  if(is.na(n))
    stop("Le tableau ", tab, " n'existe pas dans l'espace de travail courant.\n")
  nam <- listobj[n]
  dat <- get(nam)
  NAM <- ifelse(substring(nam, 3, 7) == "Param", nam, toupper(nam))
  canal <- odbcConnectAccess(laser)
  sqlClear(channel = canal, sqtable = NAM)
  sqlSave(channel = canal, dat = dat, fast = FALSE, safer = FALSE, tablename = NAM, rownames = FALSE, colnames = FALSE)
  cat("La table", NAM, "a été renseignée dans la base", laser, "\n")
  odbcCloseAll()
  invisible(NULL)
  }


Utilisation:

Code : Tout sélectionner

# nom de la base Laser à renseigner
Laser <- "D:/Laser/base/Laser.mdb"

# nom des tables à exporter vers Laser
Tables <- c("T_Param_Region", "T_Param_Unite", "T_Param_SubUnite", "T_Param_Gene",
            "T_Param_Test_Diag", "T_Param_Type_Prelev",
            "T_lieu", "T_mouvment", "T_concess", "T_boucle", "T_concani", "T_animal", "T_labo")

# exportation
for(i in seq(length(Tables)))
  BeefToLaser(tab = Tables[i], laser = Laser)



On peut aussi créer les tables à la demande, mais à ma connaissance, on ne peut pas créer de nouvelle base Access depuis R.

Bon courage,

Renaud


Retourner vers « Archives : Environnement de R »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité