Création d'une boucle avec R
Répondre à la discussion
Affichage des résultats 1 à 7 sur 7

Création d'une boucle avec R



  1. #1
    invitec4d2e6d6

    Création d'une boucle avec R


    ------

    Bonjour,

    Je voulais savoir comment créer une boucle avec le Logiciel R.

    Je dispose d'un table de données ce présentant sous cette forme

    Année Effectif
    1999 12
    1999 13
    1999 10
    2000 9
    2000 8
    2000 16
    ... ...

    Mon tableau comprenant 30 ans de mesures, je voulais savoir comment créer une boucle qui me permettrais d'avoir la somme des effectifs pour chaque année, afin de gagner du temps.

    Merci d'avance

    -----

  2. #2
    invitec5eb4b89

    Re : Création d'une boucle avec R

    Juste sur le petit exemple que tu as donné :

    Code:
    tab <-  data.frame(Annee=rep(1999:2000,c(3,3)),Effectif=c(12,13,10,9,8,16))
    tab 
    un <- unique(tab$Annee)
    somme <- c()
    
    for (i in seq_along(un) ) somme[i] <- sum(tab$Effectif[tab$Annee==un[i]])
    somme

  3. #3
    invitec4d2e6d6

    Re : Création d'une boucle avec R

    Merci pour l'info.

    Cordialement.

    Falindor

  4. #4
    invitee3e4ae46

    Création d'une boucle sous R

    Étant nouvelle sur le forum, bonjour à tous,

    J'ai le même problème que Falindor : je ne sais pas faire une boucle sous R !!

    J'ai suivi le dégagement d'oxygène pendant 50 jour sur 100 échantillons. Tous les échantillons n'ont pas été mesurés le même nombre de fois (1 mesure, 1 jour).

    Mon tableau s'organise de la sorte :

    Ech . O2 . Jour
    1 . 0,1 . 1
    1 . 0,4 . 5
    1 . NA . 13
    ... ...
    100 . 0,3 . 50

    J'aimerais calculer le dégagement gazeux cumulé total pour chaque échantillon et récupérer les résultats dans un tableau.

    La fonction pour calculer l'aire total (soit le dégagement gazeux cumulé total) est :
    sum(lintegrate(Jour, O2, xint=Jour)) package tis

    Comment faire une boucle pour m'éviter de faire ce calcul 100 fois.

    Je remercie d'avance mon/mes sauveur(s).

    Aneh

  5. A voir en vidéo sur Futura
  6. #5
    invite986312212
    Invité

    Re : Création d'une boucle avec R

    tu commences par créer une fonction qui fait le calcul pour un seul échantillon.
    disons
    aire <- function(x)sum(lintegrate(x$Jo ur,x$O2, xint=x$Jour))

    et ensuite tu fais (en supposant que ton tableau s'appelle "donnees")

    resultat <- tapply(donnees, donnees$Ech,aire)

  7. #6
    invitee3e4ae46

    Re : Création d'une boucle avec R

    Citation Envoyé par ambrosio Voir le message
    tu commences par créer une fonction qui fait le calcul pour un seul échantillon.
    disons
    aire <- function(x)sum(lintegrate(x$Jo ur,x$O2, xint=x$Jour))

    et ensuite tu fais (en supposant que ton tableau s'appelle "donnees")

    resultat <- tapply(donnees, donnees$Ech,aire)
    Quand je tape ces lignes de codes, le message suivant s'affiche :
    Code:
    Erreur dans tapply(donnees, donnees$Ech, aire) : 
      les arguments doivent avoir même longueur
    Que dois-je faire, une boucle pour remplacer le tapply ?

  8. #7
    invite986312212
    Invité

    Re : Création d'une boucle avec R

    ah c'est vrai...

    tu peux toujours faire une boucle

    si la variable Ech contient les nombres 1,2,... (dans n'importe quel ordre)

    resultat<-rep(NA,length(unique(donnees$E ch)))

    for (e in unique(donnees$Ech))
    resultat[e]<-aire(donnees[donnees$Ech==e,])

    si Ech contient un code unique qui repère chaque échantillon, mais pas nécessairement les premiers entiers, il faut remplacer Ech par as.numeric(as.factor(Ech)) par exemple (il y a d'autres façons de faire)
    où aire est définie comme précédemment, mais il y a moyen de vectoriser ça, je vais y penser.
    Dernière modification par invite986312212 ; 26/05/2011 à 13h17.

Discussions similaires

  1. Dimensionnement d'une boucle locale radio
    Par invitee7add810 dans le forum Technologies
    Réponses: 4
    Dernier message: 15/07/2009, 18h45
  2. Création d'une liaison série en boucle de courant 0-20mA
    Par inviteac6f997e dans le forum Électronique
    Réponses: 2
    Dernier message: 01/06/2008, 20h15
  3. (vb 6.0)création d'une feuille avec un bouton à l'aide du code
    Par invite7494d0d2 dans le forum Logiciel - Software - Open Source
    Réponses: 1
    Dernier message: 16/03/2007, 08h16
  4. sortir d'une boucle en matlab
    Par invite5588902a dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 06/10/2004, 15h04
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...