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 :

Création d'une variable à partir d'autres variables sous conditions


Sujet :

R

  1. #1
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Février 2013
    Messages : 27
    Points : 24
    Points
    24
    Par défaut Création d'une variable à partir d'autres variables sous conditions
    Bonjour,

    J'aimerais créer une variable à partir d'autres variables, cependant j'ai des conditions à respecter et je n'arrive par à obtenir le résultat souhaité.
    Mon tableau est le suivant :


    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
    x<-data.frame(ID=c(0,1,1,2,2,2,3,3,3,3,3),
                  produit=c("A","A","B","C","D","E","G","H","A","Z","A"),
                  date=c("12/03/2016","08/04/2016","25/05/2016","13/04/2016","08/05/2016",
                         "10/05/2016","24/04/2016","28/04/2016","28/04/2016","12/05/2016","12/05/2016"))
     
    x$date <- as.Date(x$date, format = "%d/%m/%Y")
    x$ID <- factor(x$ID)
    > x
    ID produit       date
    0       A 2016-03-12
    1       A 2016-04-08
    1       B 2016-05-25
    2       C 2016-04-13
    2       D 2016-05-08
    2       E 2016-05-10
    3       G 2016-04-24
    3       H 2016-04-28
    3       A 2016-04-28
    3       Z 2016-05-12
    3       A 2016-05-12

    Je voudrais créer une quatrième variable, qui peut prendre quatre modalités (T0, T1, T2 ou T3). J'ai plusieurs critères :
    - si le Produit = A et s'il apparaît à la première date de l'individu alors Top = T0
    - si le premier produit d'un individu n'est pas A alors Top= T1 et les suivants sont T2 et T3
    - si deux dates sont les mêmes alors ce sont le même Top

    Pour être plus claire, je souhaiterais obtenir le tableau suivant :

    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
    y<-data.frame(x,top=c("T0","T0","T1","T1","T2","T3","T1","T2","T2","T3","T3",))
    x$top <- factor(x$top)
    y
    ID produit       date top
    0       A 2016-03-12  T0
    1       A 2016-04-08  T0
    1       B 2016-05-25  T1
    2       C 2016-04-13  T1
    2       D 2016-05-08  T2
    2       E 2016-05-10  T3
    3       G 2016-04-24  T1
    3       H 2016-04-28  T2
    3       A 2016-04-28  T2
    3       Z 2016-05-12  T3
    3       A 2016-05-12  T3

    J'espère que vous pourrez m'aider, je bloque la-dessus depuis un long moment..

    Merci par avance,

    Virginie

  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 : 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,

    Qu'avez-vous écrit comme code jusqu'à présent ?

    Voici quelques pistes pour vous aider à avancer :

    > Gestion des dates : utiliser un package spécifique tel que par exemple "lubridate" (qui permettra par exemple de facilement trouver la première date pour un individu).
    > Création d'une variable selon des conditions : voir l'utilisation de structures "if...else" (ou directement de la fonction ifelse()).
    Exemple de structure :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    top <- NULL
     
    for(k in 1:N) {
     
       if( ... ) {
          top[k] <- ...
       } else if ( ... ) {
          top[k] <- ...
       } else {
          top[k]<- ...
       }
     
    }

    HTH !


    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 à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Février 2013
    Messages : 27
    Points : 24
    Points
    24
    Par défaut
    Merci pour les conseils, j'ai réussi à obtenir le résultat souhaité en utilisant des boucles if else.

    Virginie

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 10/08/2015, 12h11
  2. [XL-2010] Copie des valeurs d'une colonne dans un autre fichier sous condition
    Par Fred_rt dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 18/03/2015, 11h50
  3. Création d'une variable à partir de plusieurs variables
    Par Kiswends dans le forum SAS Base
    Réponses: 1
    Dernier message: 21/11/2013, 15h37
  4. Réponses: 2
    Dernier message: 23/09/2009, 15h40
  5. [c#]Création d'une texture à partir d'autres
    Par backfire dans le forum DirectX
    Réponses: 17
    Dernier message: 29/12/2005, 18h01

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