|
|
@@ -10,14 +10,15 @@ |
|
|
|
#' @encoding UTF-8 |
|
|
|
#' @param fichier Fichier de donnees a charger |
|
|
|
#' @param feuille Feuille a utiliser si fichier excel et en cas de feuilles mutiples (et qu'on veut acceder a une feuille au-dela de la premiere) |
|
|
|
#' @param chemin Chemin ou trouver le fichier de donnees (par defaut ../../data/) |
|
|
|
#' @return La data frame avec les labels et formats |
|
|
|
#' @examples |
|
|
|
#' \dontrun{Ma_table <- charger("donnees.xls", feuille=2)} |
|
|
|
#' @export |
|
|
|
charger <- function(fichier,feuille=1) |
|
|
|
charger <- function(fichier,feuille=1,chemin="../../data/") |
|
|
|
{ |
|
|
|
# Verification de la presence du fichier |
|
|
|
fichier<-paste("../../data/",fichier,sep="") |
|
|
|
fichier<-paste(chemin,fichier,sep="") |
|
|
|
if (!file.exists(fichier)) |
|
|
|
{ |
|
|
|
warning("Le fichier source n'existe pas !") |
|
|
@@ -39,11 +40,12 @@ charger <- function(fichier,feuille=1) |
|
|
|
formatsfile=readLines(con) |
|
|
|
close(con) |
|
|
|
|
|
|
|
# Nettoyage du fichier : espaces de debut et fin, et autour des '=', conservation uniquement des lignes significatives (value xxx et 'code'='level') |
|
|
|
formatsfile=sub("^[[:space:]]*","",formatsfile) |
|
|
|
formatsfile=sub("[[:space:]]*$","",formatsfile) |
|
|
|
formatsfile=formatsfile[grepl("^value *\\w",formatsfile) | grepl("\\d+ *= *\\'.*?\\'",formatsfile)] |
|
|
|
formatsfile=sub("[[:space:]]*=[[:space:]]","=",formatsfile) |
|
|
|
# Nettoyage du fichier : espaces de debut et fin, et autour des '=', commentaires, conservation uniquement des lignes significatives (value xxx et 'code'='level') |
|
|
|
formatsfile=sub("^[[:space:]]*(.*?)[[:space:]]*$","\\1",formatsfile) |
|
|
|
formatsfile=sub("[[:space:]]*=[[:space:]]*","=",formatsfile) |
|
|
|
formatsfile=sub("/\\*.*?\\*/","",formatsfile) |
|
|
|
formatsfile=sub(";","",formatsfile) |
|
|
|
formatsfile=formatsfile[grepl("^value[[:space:]]*\\w",formatsfile) | grepl("\\d+=\\'.*?\\'",formatsfile)] |
|
|
|
formatsfile=sub("^(\\d+)","\\'\\1\\'",formatsfile) |
|
|
|
|
|
|
|
# Creation de la liste de formats |
|
|
@@ -66,12 +68,13 @@ charger <- function(fichier,feuille=1) |
|
|
|
close(con) |
|
|
|
|
|
|
|
# Nettoyage du fichier : espaces de debut et fin, espaces multiples, autour des '=', '.' final, conservation uniquement des lignes significatives (finissant en format=xxx) |
|
|
|
attribfile=sub("^[[:space:]]*","",attribfile) |
|
|
|
attribfile=sub("[[:space:]]*$","",attribfile) |
|
|
|
formatsfile=sub("^[[:space:]]*(.*?)[[:space:]]*$","\\1",formatsfile) |
|
|
|
attribfile=sub("\\.?$","",attribfile) |
|
|
|
attribfile=attribfile[grepl("(\\w[[:space:]]+)+format *= *\\w",attribfile)] |
|
|
|
formatsfile=sub("/\\*.*?\\*/","",formatsfile) |
|
|
|
formatsfile=sub(";","",formatsfile) |
|
|
|
attribfile=sub("[[:space:]]*=[[:space:]]*","=",attribfile) |
|
|
|
attribfile=attribfile[grepl("(\\w[[:space:]]+)+format=\\w",attribfile)] |
|
|
|
attribfile=gsub("[[:space:]]+"," ",attribfile) |
|
|
|
attribfile=sub("[[:space:]]*=[[:space:]]","=",attribfile) |
|
|
|
|
|
|
|
# Attribution des formats aux variables concernees |
|
|
|
for (attrib in attribfile) |
|
|
@@ -93,7 +96,7 @@ charger <- function(fichier,feuille=1) |
|
|
|
con=file("labels.sas","r",encoding="native.enc") |
|
|
|
labelsfile=readLines(con) |
|
|
|
close(con) |
|
|
|
labels=labelsfile[grepl('^ *\\w*? *= *\\".*?\\" *$',labelsfile)] |
|
|
|
labels=labelsfile[grepl('^ *\\w*?[[:space:]]*=[[:space:]]*\\".*?\\" *$',labelsfile)] |
|
|
|
labels=paste(labels,collapse=",") |
|
|
|
label_exe = paste("label(x)<-c(",labels,")") |
|
|
|
eval(parse(text=label_exe)) |
|
|
@@ -105,7 +108,6 @@ charger <- function(fichier,feuille=1) |
|
|
|
if (is.factor(x[[var]])) |
|
|
|
levels(x[[var]])[levels(x[[var]])==""]<-NA |
|
|
|
} |
|
|
|
|
|
|
|
# Enregistrement de la table dans l'environnement |
|
|
|
x |
|
|
|
|
|
|
|
return(x) |
|
|
|
} |