Répondre à la discussion
Affichage des résultats 1 à 7 sur 7

Création d'une boucle avec R



  1. #1
    Falindor

    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. Publicité
  3. #2
    HigginsVincent

    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

  4. #3
    Falindor

    Re : Création d'une boucle avec R

    Merci pour l'info.

    Cordialement.

    Falindor

  5. #4
    Aneh

    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

  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. A voir en vidéo sur Futura
  8. #6
    Aneh

    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 ?

  9. Publicité
  10. #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.

Sur le même thème :

Discussions similaires

  1. Dimensionnement d'une boucle locale radio
    Par hyacinthe11 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 imène68 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 edelweiss1 dans le forum Logiciel - Software - Open Source
    Réponses: 1
    Dernier message: 16/03/2007, 08h16
  4. sortir d'une boucle en matlab
    Par veligère dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 06/10/2004, 15h04
Découvrez nos comparatifs produits sur l'informatique et les technologies.