Exporter automatiquement fichier csv avec nom au choix

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

Christian Vayssier
Messages : 44
Enregistré le : 11 Mai 2009, 08:44

Exporter automatiquement fichier csv avec nom au choix

Messagepar Christian Vayssier » 24 Oct 2014, 13:42

Bonjour,

Ma question est assez simple mais je ne sais pas du tout ce que je dois ajouter. En fait, mon objectif est de créer une macro (avec la fonction "function" sur R) pour me permettre d'automatiser le programme.

Ce que je voudrais, c'est que le nom de la table qui est utilisé soit celui de l'export en csv. Je mets ci joint un bout de code pour mieux voir la chose :

Code : Tout sélectionner

import_macro <- function(file, ...) {

# Importation des données :
data <- read.csv(file, ...)

# Tri par ordre croissant :
data <- data[order(data[,3], decreasing =F),]

# Export du fichier :
write.table(data, file = "D:/Dossier/data.csv",row.names=FALSE, sep=";", dec = ",")

return(data)
}


Si j'execute la commande suivante :

Code : Tout sélectionner

MA_BDD <- import_macro('D:/Dossier/fichier_a_importer.csv', header=T, sep=';')


cela va m'exporter un fichier avec le nom "data" dans le répertoire indiqué.
Ce que je veux, c'est obtenir un fichier au nom de "MA_BDD" dans le répertoire "D:/Dossier/".
Je ne sais pas quoi ajouter pour lui spécifier que "data" est un parametre de la fonction et non un nom brute.

Je vous remercie d'avance pour l'aide que vous m'apporterez.

Cordialement,

Serge Rapenne
Messages : 1426
Enregistré le : 20 Aoû 2007, 15:17
Contact :

Messagepar Serge Rapenne » 24 Oct 2014, 18:01

Bonjour,

si tu veux écraser ton fichier csv d'origine, il suffit de faire

Code : Tout sélectionner

write.table(data, file = file,row.names=FALSE, sep=";", dec = ",")


Remarque : file est une fonction de R, il n'est pas recommandé de l'utiliser comme nom de variable

Code : Tout sélectionner

import_macro <- function(fichier_entree, ...) {

# Importation des données :
data <- read.csv(fichier_entree, ...)

# Tri par ordre croissant :
data <- data[order(data[,3], decreasing =F),]

# Export du fichier :
write.table(data, file = fichier_entree,row.names=FALSE, sep=";", dec = ",")

return(data)
}

est préférable

Serge

Christian Vayssier
Messages : 44
Enregistré le : 11 Mai 2009, 08:44

Messagepar Christian Vayssier » 25 Oct 2014, 12:08

Bonjour Serge,

Merci tout d'abord pour ta réponse. Le problème avec ce code c'est que je vais écraser ma base initiale et je ne veux surtout pas faire ceci.
Je veux avoir une base en entrée et une base en sortie avec les modifications apportées et surtout avec le nom de la table adéquat.

Merci d'avance pour votre aide.

Cordialement.

Serge Rapenne
Messages : 1426
Enregistré le : 20 Aoû 2007, 15:17
Contact :

Messagepar Serge Rapenne » 25 Oct 2014, 12:18

2 possibilités (au moins)
soit tu ajoutes un paramètre à ta fonction :

Code : Tout sélectionner

import_macro <- function(fichier_entree,fichier_sortie, ...) {

# Importation des données :
data <- read.csv(fichier_entree, ...)

# Tri par ordre croissant :
data <- data[order(data[,3], decreasing =F),]

# Export du fichier :
write.table(data, file = fichier_sortie,row.names=FALSE, sep=";", dec = ",")

return(data)
}


soit tu construis le nom à partir du nom du fichier d'entrée :

Code : Tout sélectionner

import_macro <- function(fichier_entree, ...) {

# Importation des données :
data <- read.csv(fichier_entree, ...)

# Tri par ordre croissant :
data <- data[order(data[,3], decreasing =F),]
fichier sortie<-gsub(".csv","_modif.csv",fichier_entree)
# Export du fichier :
write.table(data, file = fichier_sortie,row.names=FALSE, sep=";", dec = ",")

return(data)
}

Christian Vayssier
Messages : 44
Enregistré le : 11 Mai 2009, 08:44

Messagepar Christian Vayssier » 25 Oct 2014, 14:11

Merci beaucoup Serge,

la 2eme solution correspond à ce que je cherchais.
Je te remercie encore,

Cdt


Retourner vers « Questions en cours »

Qui est en ligne

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