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 :

Combiner eux variables binaires en une seule


Sujet :

R

  1. #1
    Nouveau Candidat au Club
    Femme Profil pro
    étudiante Master santé publique
    Inscrit en
    Février 2018
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : étudiante Master santé publique

    Informations forums :
    Inscription : Février 2018
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Combiner eux variables binaires en une seule
    Bonjour à tous,

    j'ai essayé de combiner 2 variables binaires en 1 seule par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    MergedDataset$Diab_sex <- NA
     
    MergedDataset$Diab_sex <- [MergedDataset$Diab == "oui" & MergedDataset$Sex == "F"]<- "Fem_Diab"
    MergedDataset$Diab_sex <- [MergedDataset$Diab == "non" & MergedDataset$Sex == "F"]<- "Fem_NDiab"
    MergedDataset$Diab_sex <- [MergedDataset$Diab == "oui" & MergedDataset$Sex == "H"]<- "Hom_Diab"
    MergedDataset$Diab_sex <- [MergedDataset$Diab == "non" & MergedDataset$Sex == "H"]<- "Hom_NDiab"
    ça ne fonctionne pas, j'ai un message erreur <text>

    je n'arrive pas à trouver mon erreur. pouvez-vous m'indiquer ce qui ne va pas svp ou m'indiquer une autre commande pour atteindre mon objectif svp ?


    Je veux combiner mes 2 variables binaires pour ensuite faire un test de comparaison de 2 moyennes observées du type :
    moyenne tension artérielle des femmes diabétique/moyenne Tension artérielle des femmes non-diabétique

    Bon, je n'ai pas une grande expérience de la programmation ce qui ne m'aide pas...

    cordialement

  2. #2
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2018
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2018
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    Bonjour,

    Vous n'avez logiquement pas besoin de passer par la combinaison de vos variables.


    Si par exemple vous voulez obtenir la moyenne de tension artérielle (TA) chez les femmes diabétiques :
    - soit TA la variable tension artérielle
    - soit SEXE la variable sexe (codée en binaire avec par exemple 1 pour les femmes 2 pour les hommes)
    - soit Diabete la variable diabète (codée en binaire avec par exemple 1 pour diabétique et 0 pour non diabétique)
    - soit donnees le nom de votre data frame

    SOLUTION 1 :
    pour avoir la moyenne de TA chez les femmes diabétiques il suffit de faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mean(donnees$TA[donnees$SEXE==1&donnees$Diabete==1])
    et vous obtiendrez ainsi la moyenne de TA chez les femmes diabétiques.

    SOLUTION 2 :
    vous créez un nouveau data frame en sélectionnant par exemple que les femmes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    donnees2 <- donnees[which(donnees$SEXE==1),]
    puis vous pouvez simplement récupérer les moyennes en faisant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mean(donnees2$TA[donnees2$Diabete==1])
    pour la moyenne de TA chez les femmes diabétiques.
    ou sinon fonction epi.descriptives du package epiR :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    epi.descriptives(donnees2$TA[donnees2$Diabete==1] )
    qui vous donnera en plus les écart-types et les NA

    Cette seconde solution vous offre l'avantage de faire directement un test de student si besoin :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    t.test(donnees2$TA~donnees2$Diabete)
    après avoir testé au préalable l'égalité des variances évidemment par un var.test (si variances égales rajouter dans t.test la valeur var.equal = T sinon var.equal = F )

    Voilà, c'est un peu du bricolage, je suis sûr qu'il y a une manière plus simple de le faire mais moi je me débrouille comme ça !

    Cordialement

    En y réfléchissant j'ai aussi une 3ème solution à vous proposer :

    SOLUTION 3 : par un ifelse

    création d'une nouvelle variable femmes diabétiques :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    donnees$fem_diab <- ifelse(donnees$SEXE==1&donnees$Diabete==1, 1 , 0)
    la variable fem_diab prendra la valeur 1 si femme diabétique, 0 sinon

  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,

    Une autre option avec le package "dplyr" permettant de calculer la moyenne pour chacune des 4 classes souhaitées :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    library(dplyr)
    tab <- MergedDataset %>% group_by(Sex, Diab) %>%
                             summarise(Moy = mean(TA, na.rm = TRUE)) # Si TA est la tension artérielle dont vous voulez la moyenne
    tab
    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.

  4. #4
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2018
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2018
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    Re bonjour,

    Bien plus simple en effet !

    Sinon il y a ddply du package plyr (qui revient au même mais je trouve que la syntaxe est plus simple).

    Cordialement

  5. #5
    Nouveau Candidat au Club
    Femme Profil pro
    étudiante Master santé publique
    Inscrit en
    Février 2018
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : étudiante Master santé publique

    Informations forums :
    Inscription : Février 2018
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Bonsoir,
    Je vous remercie ! Je vais tester tout cela.
    Effectivement, le but est de pouvoir faire un student derrière !
    La solution de créer un sous-ensemble me semble la plus fonctionnel.
    Bien cordialement
    C. C.

Discussions similaires

  1. Réponses: 4
    Dernier message: 07/08/2012, 21h51
  2. [MySQL] Insèrer variables dates en une seule variable
    Par roy-mustang dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 01/05/2009, 22h31
  3. Réponses: 11
    Dernier message: 11/07/2008, 15h58
  4. Variable Globale pour une seul page
    Par rad_hass dans le forum ASP.NET
    Réponses: 4
    Dernier message: 19/02/2008, 23h01
  5. [Tableaux] variables GET en une seule
    Par micfont999 dans le forum Langage
    Réponses: 2
    Dernier message: 02/10/2007, 18h14

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