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 :

Condition sous R


Sujet :

R

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2018
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2018
    Messages : 20
    Par défaut Condition sous R
    Bonjour,

    Je travail sur R et je dois crée 2 nouvelles colonnes sous conditions d'autres colonnes.

    En gros ma table se présente comme ceci :

    Nom : Capture d’écran (31).png
Affichages : 220
Taille : 15,4 Ko


    et ce que je voudrais c'est crée 2 nouvelles colonnes qui renvoi le nombre de 1 et de 0 pour chaque client, mais la condition c'est que il faut aller chercher l'information dans la bonne colonne vacances_zone selon son appartenance dans la colonne Zone.

    en gros ce que je voudrais comme sortit pour l'image que je vous ai joint ça serait :

    ID_client nb_vac nb_hors_vac
    100058 4 2
    100068 2 1
    100070 1 3

    Je vous remercie d'avance pour votre aide.

    Bien cordialement,

    Ali

  2. #2
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2018
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2018
    Messages : 20
    Par défaut
    Au final j'ai réussi à résoudre mon problème en passant par plusieurs étapes, même si j'aurais préféré faire une boucle mais je ne suis pas trop calé sur les boucles

    Voici le code que j'ai utilisé :

    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
    ## Afin de compter le nombre de commande passé pendant les vacances et hors vacances ##
    ## Je crée 3 nouvelles tables, chacune des tables contient les clients pour une zone donnée ##
    Zone_A_client <- Table_11[Table_11$zone=="A",c(1,12,16)]
    Zone_B_client <- Table_11[Table_11$zone=="B",c(1,13,16)]
    Zone_C_client <- Table_11[Table_11$zone=="C",c(1,14,16)]
     
    ## Maintenant je compte le nombre de commande passé pendant les vac et hors vac pour la zone A##
    zone_A_summary <- with(Zone_A_client, table(idclient_do, vacances_zone_a))
    zone_A_summary <- as.data.frame.matrix(zone_A_summary) # Transformation de la table en data frame
    setDT(zone_A_summary, keep.rownames = TRUE)[] # Transformation de l'index en colonne 
    names(zone_A_summary) <- c("idclient_do", "Nb_hors_vac", "Nb_vac")
     
    ## Je répète la même chose pour la zone B A##
    zone_B_summary <- with(Zone_B_client, table(idclient_do, vacances_zone_b))
    zone_B_summary <- as.data.frame.matrix(zone_B_summary) # Transformation de la table en data frame
    setDT(zone_B_summary, keep.rownames = TRUE)[] # Transformation de l'index en colonne 
    names(zone_B_summary) <- c("idclient_do", "Nb_hors_vac", "Nb_vac")
     
    ## Et je finis par la zone C A##
    zone_C_summary <- with(Zone_C_client, table(idclient_do, vacances_zone_c))
    zone_C_summary <- as.data.frame.matrix(zone_C_summary) # Transformation de la table en data frame
    setDT(zone_C_summary, keep.rownames = TRUE)[] # Transformation de l'index en colonne 
    names(zone_C_summary) <- c("idclient_do", "Nb_hors_vac", "Nb_vac")
     
    ## Je rassemble les table zone_summary A, B et C en une seule ##
    Zone_total_summary <- rbind(zone_A_summary, zone_B_summary, zone_C_summary)
    Bien cordialement,

    Ali

  3. #3
    Membre chevronné
    Inscrit en
    Février 2011
    Messages
    276
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 276
    Par défaut
    Bonjour,

    Une possibilité avec tidyr et dplyr :
    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
    tab <- structure(list(zone = structure(c(2L, 2L, 2L, 2L, 2L, 2L, 1L, 
    1L, 2L, 2L, 1L, 1L), .Label = c("A", "B"), class = "factor"), 
        vac_zone_a = c(1L, 1L, 1L, 0L, 0L, 1L, 1L, 0L, 1L, 1L, 0L, 
        1L), vac_zone_b = c(1L, 1L, 1L, 0L, 0L, 1L, 0L, 0L, 0L, 1L, 
        1L, 1L), vac_zone_c = c(1L, 1L, 1L, 0L, 0L, 1L, 0L, 0L, 1L, 
        1L, 1L, 1L), idclient = c(100058L, 100058L, 100058L, 100058L, 
        100058L, 100058L, 100068L, 100068L, 100059L, 100059L, 100069L, 
        100069L)), .Names = c("zone", "vac_zone_a", "vac_zone_b", 
    "vac_zone_c", "idclient"), class = "data.frame", row.names = c(NA, 
    -12L))
     
    tab2 <- gather(tab, "vacs", "value", -zone, -idclient)
    tab2$vacs <- toupper(sub("^.+_", "", tab2$vacs))
    tab2 <- tab2[tab2$zone==tab2$vacs,]
    tab2 %>% group_by(idclient) %>% summarise(nb_vac = sum(value), nb_hros_vac = sum(value!=1))
    A toi d'adapter les noms en fonction de tes noms de colonne.

    cdlt

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2018
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2018
    Messages : 20
    Par défaut
    Merci pour ton retour tototode.
    En adaptant ton code à mon cas, cela fonctionne bien.

    Bien cordialement,

    Ali

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

Discussions similaires

  1. comptages avec 2 conditions sous excel
    Par cpe81 dans le forum Excel
    Réponses: 8
    Dernier message: 11/12/2008, 13h45
  2. Remplir une cellule Excel avec une condition sous vb
    Par enibris dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 14/01/2008, 13h47
  3. [Calculs VBA] Test de condition sous VBA
    Par guen dans le forum VBA Access
    Réponses: 8
    Dernier message: 28/11/2007, 17h52
  4. [Excel VBA] Faire une condition sous Excel
    Par ANTMA dans le forum Excel
    Réponses: 3
    Dernier message: 03/08/2007, 11h20
  5. Problème avec les conditions ''sous-ensemble d'un tableau''
    Par djangossoul dans le forum LabVIEW
    Réponses: 2
    Dernier message: 07/06/2007, 12h23

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