IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

R Discussion :

R- création d'une fonction


Sujet :

R

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Novembre 2011
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Novembre 2011
    Messages : 11
    Par défaut R- création d'une fonction
    Bonjour,

    Je suis nouveau sur le forum. je m'y suis inscrit car je suis chargé de faire une fonction R dans le cadre d'un travail académique. Le problème c'est que je n'ai jamais fait d'informatique et encore moins de programmation statistique avec R (je termine une formation de biologiste).

    Je ne suis d'ailleurs pas obligé d'utiliser R pour ce travail mais c'est la manière la plus pratique d'arriver à des résultats. J'ai quand même suivi quelque cours et je sais faire les taches basiques. Cela dis je viens ici pour trouver des gens qui pourront m'aider dans mon travail.

    Voici la base de données: http://icampus.uclouvain.be/clarolin...dReq=LSTAT2020

    A partir de ça je dois faire une fonction qui effectue des analyses descriptives.

    Donc voilà, j'ai déjà un problème en ce qui concerne l'importation du fichier dans R. Lorsque je rentre la ligne de code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    coralreefs=read.table("Z:/tp stat/R/coralreefs.txt",header=TRUE)
    R me met:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Erreur dans scan(file, what, nmax, sep, dec, quote, skip, nlines, na.strings,  : 
      la ligne 1 n'avait pas 6 éléments
    Je pense que c'est dû aux séparateurs du fichier txt. qui ne sont pas pris en compte dans la ligne de code mais je ne sais pas quel argument utiliser (sep peut-être?) ni comment.

    Voilà merci à ceux qui m'aideront tout au long de ce travail (très court mais difficile pour un non-initié). Je vous mets les instructions du travail au cas où un des éléments serait utile pour répondre à mes futures questions. Cela dit, loin de moi l'idée de ne pas prendre les devants. J'essayerais toujours de résoudre les problèmes par moi-même avant de vous demander un conseil si je bloque sur une ligne.

    Citation Envoyé par Instructions
    Les fi chiers que votre fonction doit pouvoir traiter contiennent tous des mesures des variables
    Country : Le nom du pays ou de l’île
    Region : La région du monde (1 : Paci c, 2 : Americas, 3 : Oceania, 4 : Middle East, 5 : Asia, 6 : Africa)
    Number of reef fish species : Le nombre d'espèces de poisson coralliennes répertoriées
    Number of coral species : Le nombre d'espèces de corail répertoriées
    Percentage of Reef at risk : Le pourcentage de récifs en danger (%)
    Risk for reef : Le risque pour le récif corallien (1 : low, 2 : high)
    GDP : Le produit intérieur brut par habitant et par an (en dollars)
    Economic health : La santé économique (1 : low, 2 : medium, 3 : high)

    Les fichiers à traiter sont susceptibles de contenir en outre un certain nombre de variables supplémentaires -auxquelles vous ne vous intéressez pas -, parmi lesquelles :
    Number of mangrove fish species : Le nombre d'espèces de poissons répertoriées dans la mangrove
    Marine Area : La surface marine (en km2)
    Coastline : La longueur de la côte (en km)
    Land Area : La surface de terre (en km2)
    Reef Area : La surface de récif de corail (en km2)
    Mangrove area : La surface de mangrove (en km2)
    Population : La population
    Percentage of coastal population : Pourcentage de la population habitant sur la côte (%)
    Fish consumption : Consommation de poisson (en kg) par habitant et par an.

    L'ordre des colonnes correspondant aux di fférentes variables présentes dans le fichier peut varier d'un fichier à l'autre. Toutes les variables sont identifiées par leur nom, tel qu'indiqué ci-dessus, en première ligne du fi chier.

    Le délimiteur (séparant les di fférents champs du fichier) et le symbole décimal (',' ou '.') peuvent varier en fonction du fi chier à lire et devra donc être passé en argument de la fonction.
    Le premier fi chier sur lequel vous êtes invité à tester votre fonction est le fichier CoralReefs.txt.

    Afi n que vous puissiez vari er la généralité de votre fonction, un second fi chier vous est fourni, CoralReefsTest.txt, auquel vous devrez pouvoir "galement appliquer votre fonction.
    Votre fonction devra pouvoir écrire les résultats de type texte dans un fi chier texte et sauvegarder les résultats de type graphique dans un fichier pdf. Le détail des résultats textes et graphiques demandés est précisé dans la section suivante, ainsi que la valeur que doit renvoyer la fonction.
    La mise en page des résultats texte et graphique devra être la plus proche possible de celle donnée en exemple (lorsque la fonction est appliquée au fichier CoralReefs.txt ).

    Description de la fonction à écrire
    Nom de la fonction à écrire : MiseEnContexte
    Arguments de la fonction :
    path : le chemin d'accès au fichier (le répertoire)
    lename : le nom du fichier de données (type txt)
    dlm : le délimiteur à utiliser pour la lecture du fi chier
    top : le nombre de lignes à ignorer au début du fi chier
    symbdec : symbole décimal à utiliser pour la lecture du fi chier susmentionné
    export : un scalaire valant 0 si les résultats doivent être affichés à l'écran et 1 si les résultats doivent être imprimés dans des fichiers
    T le : Nom du fichier texte où seront mis les résultats de type texte
    G le : Nom du fichier graphique (type pdf ) où seront mis les résultats de type graphique

    NB : le fi chier des données contient les noms des variables dans la cinquième rangée. Ces noms de variables doivent figurer comme noms de colonnes dans l'objet (data.frame) en R qui est créé par la lecture. Les premières quatre rangées sont de l'information par rapport au système utilisé pour créer le fichier des données. Ces rangées ne nous intèressent pas et vous devez les ignorer.

    Taches que la fonction doit réaliser :
    1. Lire le fichier de données
    2. Écrire une table du nombre de pays (ou îles) répertoriés par région. Les régions doivent être indiquées par ordre décroissant du nombre de pays répertoriés.
    3. Repérer les régions où moins de 10 pays sont répertoriés. Dans la suite, on ne calculera pas de statistiques par région pour ces pays (et pas de graphiques par région non plus).
      De même, on ne calculera pas de statistiques par région pour les pays pour lesquels la région est manquante (et pas de graphiques par région non plus).
    4. Ecrire une table de statistiques descriptives par région. Cette table reprend les valeurs des moyennes, écarts-types, minimums et maximums des nombres d'espèces de poissons vivants dans les récifs coralliens et nombre d'espèces de corail. Ces valeurs sont arrondies à la deuxième décimale. Si des valeurs sont manquantes, elles doivent être exclues des statistiques.
    5. Écrire une table croisée de la santé économique de la région (rangées) et du risque pour le corail (colonnes) en pourcentage par rangée, arrondi à la deuxième décimale.
    6. Créer une figure comprenant deux graphiques cote à cote, avec le titre général, Liens entre les poissons des récifs coraliens et les situations économiques régionales.
      Le premier graphique est un ensemble de boxplots du nombre d'espèces de poisson dans les récifs coralliens en fonction de la santé économique (bonne d'un côté, moyenne ou faible de l'autre) et de la région.
      Le second graphique est un ensemble de deux droites de régression linéaire du PIB en fonction du nombre d'espèces de poissons des récifs coralliens, l'une des régressions concernant les pays (ou les îles) ayant une bonne santé économique, l'autre ceux qui ont une santé économique moyenne ou faible.

    Valeur de la fonction : une liste comprenant les deux éléments suivants :
    1. Stat.Descriptives : La table de statistiques descriptive créée au point (4) ci-dessus
    2. Tableau.croisée : La table croisée du risque pour le corail et de la santé économique, créée au point (5) ci-dessus.

  2. #2
    Modératrice

    Femme Profil pro
    Statisticienne, Fondatrice de la société DACTA
    Inscrit en
    Juin 2010
    Messages
    893
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Statisticienne, Fondatrice de la société DACTA

    Informations forums :
    Inscription : Juin 2010
    Messages : 893
    Par défaut
    Bonjour,

    Tout d'abord, en ce qui concerne le chargement des données dans R, effectivement la fonction "read.table" possède un paramètre permettant de spécifier le séparateur de champs présent dans le fichier à charger : il s'agit du paramêtre sep .
    Pour accéder à l'aide de la fonction :

    Ensuite, je vous rappelle que bien que le forum ait pour vocation de permettre l'entraide, il n'a pas vocation à résoudre à votre place vos exercices ou vos projets.

    Citation Envoyé par Prisonale
    Cela dit loin de moi l'idée de ne pas prendre les devants. J'essayerais toujours de résoudre les problèmes par moi-même avant de vous demander un conseil si je bloque sur une ligne.
    Dans cette optique, je vous invite à venir poster le code que vous avez écrit (même s'il renvoie des erreurs) et vos éventuelles questions.

    Bonne continuation


    Cordialement,

    A.D.

    Forum R
    Fournir le code utilisé (pensez aux balises code !), les packages nécessaires, ainsi qu'un court mais représentatif extrait du jeu de données et les éventuels messages d'erreur.
    Recherche d'informations concernant R : RSiteSearch / tutoriels : http://r.developpez.com/cours/ .

    Pensez également au bouton "Résolu" et à voter (en bas à droite des messages) lorsque vous avez obtenu une réponse satisfaisante.

  3. #3
    Membre averti
    Inscrit en
    Novembre 2011
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Novembre 2011
    Messages : 11
    Par défaut
    Ensuite, je vous rappelle que bien que le forum ait pour vocation de permettre l'entraide, il n'a pas vocation à résoudre à votre place vos exercices ou vos projets.
    Oui c'est pour cela que j'ai mis mon (mauvais) code (je le remet avec sep en +):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    coralreefs=read.table("Z:/tp stat/R/coralreefs.txt",header=TRUE,sep="")
    Voilà ce que j'obtiens en réponse:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    > CoralReefs=read.table("Z:/tp stat/R/CoralReefs.txt",header=TRUE,sep="")
    Erreur dans scan(file, what, nmax, sep, dec, quote, skip, nlines, na.strings,  : 
      la ligne 1 n'avait pas 6 éléments
    Donc voilà j'ai du mal avec cet argument. En gros je dois tenir compte de la tabulation mais je ne sais pas comment.
    Merci de vos encouragements

  4. #4
    Membre Expert
    Avatar de pitipoisson
    Homme Profil pro
    Chercheur
    Inscrit en
    Septembre 2006
    Messages
    1 942
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Chercheur
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 942
    Par défaut
    Bonjour,
    Citation Envoyé par Prisonale Voir le message
    ... (je termine une formation de biologiste).

    Je ne suis d'ailleurs pas obligé d'utiliser R pour ce travail mais c'est la manière la plus pratique d'arriver à des résultats.
    Bon choix à mon avis... R ne cesse de prendre de l'importance dans les sciences du vivant ! Ce que tu vas apprendre maintenant te servira certainement par la suite.

    Pour ton premier problème - et comme il s'agit aussi d'un exercice pour toi - je te conseille d'aller voir les autres paramètres de la fonction read.table dans la page d'aide que t'a indiquée A.D. Un indice, dans ton cas, il y a un autre séparateur que tu dois également définir (mais ce n'est peut-être pas le seul problème).

    Pour info, tu peux* également préciser que le séparateur de champs est la tabulation :
    Pour les aspects de création de fonction, je t'invite à consulter les tutoriels R et la FaQ sur DVP. Si des choses ne te paraissent pas claires, n'hésite pas alors à poser des questions ici.

    Bon apprentissage.

    Edit: lien tuto, mais pas de FaQ R à ce jour
    En complément de ceux d'introduction, je te conseille tout particulièrement les "Bonnes pratiques" de Christophe Genolini.

    * C'est même nécessaire car tu as des espaces dans les noms de pays !

  5. #5
    Membre Expert
    Avatar de pitipoisson
    Homme Profil pro
    Chercheur
    Inscrit en
    Septembre 2006
    Messages
    1 942
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Chercheur
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 942
    Par défaut
    Citation Envoyé par pitipoisson Voir le message
    ... (mais ce n'est peut-être pas le seul problème).
    Effectivement !

    Il faut également tenir compte du fait que tu as des lignes de commentaire en début de fichier. La réponse est également dans l'aide de la fonction.

  6. #6
    Membre averti
    Inscrit en
    Juin 2009
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 15
    Par défaut
    Bonjour,

    Voila l'instruction pour obtenir un affichage propre de ton jeu de données

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    z<-read.table("C:\\download.php.txt",sep="\t",dec=",",header=TRUE)
    Veilles a changer le fichier texte pour que R ne considère pas les premières lignes comme ton HEADER mais comme des commentaires.
    % est remplace par #.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    #Coral reefs and economic indicators
    #Global survey
    #
    #data matic extraction 22 October 2011
    #
    Sinon R ne verra qu'une colonne.

    Bonne continuation!

  7. #7
    Membre Expert
    Avatar de pitipoisson
    Homme Profil pro
    Chercheur
    Inscrit en
    Septembre 2006
    Messages
    1 942
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Chercheur
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 942
    Par défaut
    Citation Envoyé par sebintokyo Voir le message
    Veilles a changer le fichier texte pour que R ne considère pas les premières lignes comme ton HEADER mais comme des commentaires.
    % est remplace par #.
    Ce n'est pas absolument nécessaire. La fonction read.table a un argument qui permet de contrôler le caractère de commentaire (mais je laisse à Prisonale la joie de trouver lequel).

  8. #8
    Membre averti
    Inscrit en
    Novembre 2011
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Novembre 2011
    Messages : 11
    Par défaut
    ok merci beaucoup je testerai tout ça lundi car je serai très occupé ce w-e. je vous tiens au courant.

  9. #9
    Membre averti
    Inscrit en
    Novembre 2011
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Novembre 2011
    Messages : 11
    Par défaut
    Ok, merci pour votre aide, j'ai presque fini la fonction. J'ai juste un problème pour faire un tableau avec deux graphiques côte à côte. Je préciserais l'aide dont j'ai besoin ce soir si je n'ai pas trouvé de piste d'ici là.

  10. #10
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Août 2007
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2007
    Messages : 125
    Par défaut
    Citation Envoyé par Prisonale Voir le message
    Ok, merci pour votre aide, j'ai presque fini la fonction. J'ai juste un problème pour faire un tableau avec deux graphiques côte à côte. Je préciserais l'aide dont j'ai besoin ce soir si je n'ai pas trouvé de piste d'ici là.
    Salut,

    Pour mettre deux graphiques côte à côte, regarde les options graphiques de la commande par() via

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 21/03/2011, 11h54
  2. Problème pour la création d'une fonction
    Par jipé95 dans le forum C
    Réponses: 5
    Dernier message: 10/12/2006, 14h28
  3. Réponses: 16
    Dernier message: 24/10/2006, 21h37
  4. Création d'une fonction sans paramètre?
    Par falcon dans le forum Oracle
    Réponses: 3
    Dernier message: 13/12/2004, 11h32
  5. Réponses: 14
    Dernier message: 09/04/2004, 13h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo