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 :

Calcul et remplacer des valeurs avec fonction famille apply()


Sujet :

R

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 24
    Points : 12
    Points
    12
    Par défaut Calcul et remplacer des valeurs avec fonction famille apply()
    Bonjour,

    Je souhaiterais remplacer les valeurs d'une colonne en fonction d'un test.
    J'ai un jeu de données qui est de la sorte
    sexe age poids taille
    0 17 79 180
    1 25 60 164
    1 28 80 184
    1 15 70 174

    Je souhaiterais remplacer les valeurs de l'âge qui sont inférieures à 20 par la moyenne des âges.
    Cela fonctionne très bien avec une boucle for et un test if.
    Mais je souhaiterais faire la même chose avec apply (ou une autre fonction s ou t apply) mais je n'y arrive pas.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    age <- array(data$age)
    apply(age,1,function(x) if(x<20) mean(x))
    Je n'ai pas le résultat souhaité.
    Y aurait-il une personne qui pourrait m'aiguiller?

    Cdlt,
    Yassine

  2. #2
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mai 2008
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2008
    Messages : 37
    Points : 43
    Points
    43
    Par défaut
    Je ne comprends pas bien l’intérêt ni si c'est possible.
    À ta place, j'utiliserais plutôt l'indexation logique :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    age[age<20]<- mean(age)

  3. #3
    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 : 35
    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
    Points : 2 673
    Points
    2 673
    Par défaut
    Bonjour picka,

    Effectivement, la réponse de jack-no est tout à fait pertinente et moins lourde

    Cependant, si tu souhaites une "correction" de ta syntaxe avec le apply, en voici une :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    apply(age,1,function(x){ if(x<20) mean(age) else x })
    C'était l'élément passé dans la moyenne qui était incorrect dans ton code, en effet, le calcul est fait pour chaque élément de "age" (chaque "x" de la fonction), donc à chaque étape "mean(x)" renvoyait "x".


    Bonne continuation !


    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.

Discussions similaires

  1. Calculer des dates avec fonction Gel de temps
    Par maxdata dans le forum Langage
    Réponses: 4
    Dernier message: 06/12/2012, 13h01
  2. calculer des valeurs en fonctions de dates
    Par texas2607 dans le forum Excel
    Réponses: 9
    Dernier message: 21/01/2011, 14h01
  3. Remplacer des caractères avec la fonction string.replace
    Par chtom dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 17/12/2008, 16h43
  4. Ecraser des valeurs avec Dates identiques
    Par beurnoir dans le forum Access
    Réponses: 10
    Dernier message: 25/10/2005, 09h47
  5. [VB.NET] [ODBC] Récupérer des valeurs avec requête ODBC?
    Par Pleymo dans le forum Windows Forms
    Réponses: 5
    Dernier message: 04/03/2005, 16h38

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