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 :

Richesse cumulée par site et par année


Sujet :

R

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 20
    Par défaut Richesse cumulée par site et par année
    Bonjour à vous.

    Je suis venu sur ce forum pour vous soumettre un problème que je ne peux solutionner au vu de mon niveau en langage R (très très faible ).
    Je possède plusieurs jeux de données du type suivant (en pièce jointe). la colonne "sp" correspond aux indicatifs des espèces, "annee" correspond à la première, deuxième puis troisième année, "site" correspond à mes sites d'étude, "pre" correspond au fait que l'espèce est effectivement présente.
    Mes questions sont les suivantes :
    • Comment faire pour obtenir le nombre moyen d'espèces capturées sur un site sur une, deux puis trois années ?
    • Comment faire pour obtenir le nombre moyen d'espèces capturées sur deux sites sur une, deux puis trois années ?
    • Comment faire pour obtenir le nombre moyen d'espèces capturées sur trois sites sur une, deux puis trois années ?

    J'espère avoir été clair dans mes questions et ne pas aller à l'encontre des règles de ce forum que j'ai pourtant lues.
    Merci pour vos indications et vos éventuelles solutions.
    Fichiers attachés Fichiers attachés
    • Type de fichier : txt R.txt (1,3 Ko, 82 affichages)

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 73
    Par défaut
    Bonjour,

    Que veux tu dire par nombre moyen d'éspèces capturée, est ce que tu fais référence à la colonne "Pre", c'est à dire elle designe bien le fait que l'éspèce est bien capturée ou pas ?

    Bien à toi
    Manoir

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 20
    Par défaut
    En effet, je veux parler de la colonne "pre".

  4. #4
    Membre Expert Avatar de jabbounet
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juin 2009
    Messages
    1 909
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 909
    Par défaut
    et passant par une bête feuille de calcul dans un tableau excel ?

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 20
    Par défaut
    En fait, pour connaitre le nombre moyen d'espèces capturés sur un site en une année, c'est faisable et très simple (moyenne du total de chaque site).
    Mais pour deux années, il faut alors réaliser des combinaisons de sites et années (site1 an1; site1 an2 puis site1 an1; site1 an3 et ainsi de suite pour chaque site) pour pouvoir effectuer un moyenne.
    Le problème se complexifie en passant à un système de deux sites. Il faut alors tenir compte des espèces en commun de ces deux sites.
    Les combinaisons sont alors trop nombreuses (à mon goût) pour tout faire à la main.
    C'est pour cela que je voudrais automatiser la manipulation avec R, d'autant plus que j'ai d'autres jeux de données à traiter de la sorte.

    Edit: Le but n'est pas de savoir combien d'espèces sont capturées par site mais combien un site (n'importe le quel) capture d'espèces sur une, deux puis trois années. Puis pareil pour deux sites (n'importe les quels) et enfin trois sites.

  6. #6
    Membre éclairé Avatar de habasque
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Septembre 2006
    Messages
    530
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Septembre 2006
    Messages : 530
    Par défaut fonction with
    salut,

    alors je peux proposer le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    espe=read.table("R-1.txt", sep="\t", dec=".",header=T, colClasses = "character")
    names(espe) = c("sp","site","annee","pre")
    test = with(espe,table(site,annee, exclude = NA))
    en résultat, tu as le nombre d'espèces par site et année :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
        annee
    site  1  2  3
       1 11 14 13
       2  5 11 11
       3  9 18 11
    si tu veux les résultats sur 2,3 années, tu n'as plus qu'à faire des additions !
    a moins que ca ne soit pas le résultat escompté !?

    a+

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 20
    Par défaut
    Bonjour.
    Merci pour vos réponses et suggestions.
    Cependant, la question n'est pas de savoir combien d'espèces sont capturées pour chaque site, mais bien de savoir combien d'espèces sont capturées en moyenne par site (n'importe lequel) pour une année (n'importe la quelle) deux puis trois années, puis pour deux sites (n'importe les quels) pour une deux et trois années et enfin pour trois sites sur une, deux et trois années.
    Le problème requiert donc de faire intervenir toutes les combinaisons de sites et années possibles pour pouvoir connaitre les résultats. C'est pour cela que je voulais automatiser la manipulation.
    J'espère que je suis suffisament clair. Merci de me dire si je ne le suis pas assez.

  8. #8
    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,

    Si j'ai bien compris ce que tu cherches à faire, j'ai peut-être une piste un peu barbare (beaucoup de boucles imbriquées) mais qui devrait marcher :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    require(utils)
    
    years <- 1:3                            # Ou unique(data$annee)
    sites <- letters[1:3]                   # Ou unique(data$site)
    ## j'ai mis des lettre aux sites pour que ce soit plus lisible !
    
    for (ny in 1:length(years))
    {
        ## Combinaisons d'années:
        yrs.comb <- combn(years, ny)
    
        for(ns in 1:length(sites))
        {
            ## Combinaisons de sites:
            site.comb <- combn(sites, ns)
    
            ## Utilisation des combinaisons:
            for (i in 1:ncol(yrs.comb))
            {
                for (j in 1:ncol(site.comb))
                {
                    ## Pour l'exemple:
                    message(paste("Années: ",
                                  paste(yrs.comb[ ,i], collapse= ", "),
                                  "; Sites:",
                                  paste(site.comb[ ,j], collapse=", ")))
    
                    ## En fait, tu sélectionnes tes lignes avec:
                    # data[is.element(data$annee, yrs.comb[ , i]) &
                    #      is.element(data$site, site.comb[ , j]), ]
                }
            }
        }
    }
    Ça te renvoie quelque chose du style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    Années:  1 ; Sites: a
    Années:  1 ; Sites: b
    Années:  1 ; Sites: c
    Années:  2 ; Sites: a
    Années:  2 ; Sites: b
    ...
    Années:  2 ; Sites: a, b
    Années:  2 ; Sites: a, c
    Années:  2 ; Sites: b, c
    Années:  3 ; Sites: a, b
    Années:  3 ; Sites: a, c
    Années:  3 ; Sites: b, c
    Années:  1 ; Sites: a, b, c
    ...
    Années:  1, 2, 3 ; Sites: a
    Années:  1, 2, 3 ; Sites: b
    Années:  1, 2, 3 ; Sites: c
    Années:  1, 2, 3 ; Sites: a, b
    Années:  1, 2, 3 ; Sites: a, c
    Années:  1, 2, 3 ; Sites: b, c
    Années:  1, 2, 3 ; Sites: a, b, c
    Reste plus qu'à utiliser la data.frame réduite que tu obtiens pour calculer et stocker le nombre d'espèces.
    Une piste :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    length(unique(data[is.element(data$annee, yrs.comb[ , i]) &
                       is.element(data$site, site.comb[ , j]), "sp"]))
    Bon, y'a sûrement moyen de faire plus propre et rapide avec des <qqch>apply (surtout sur les deux dernières boucles) , mais à cet heure de la journée, le code commence à se brouiller devant mes yeux

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

Discussions similaires

  1. Script Site dynamique par Pierre-Baptiste Naigeon
    Par hx.jonathan dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 15
    Dernier message: 09/02/2007, 23h56
  2. cumul vente par mois et par année
    Par christopheS dans le forum Access
    Réponses: 4
    Dernier message: 03/10/2006, 15h01
  3. Réponses: 4
    Dernier message: 27/09/2006, 12h17
  4. [FTP] Rechercher des fichiers dans un site FTP par PHP
    Par jack_1981 dans le forum Langage
    Réponses: 31
    Dernier message: 03/08/2006, 13h37
  5. Réponses: 7
    Dernier message: 18/03/2006, 13h16

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