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 :

Boxplot à partir de sous groupes


Sujet :

R

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Inscrit en
    Mars 2013
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Mars 2013
    Messages : 54
    Par défaut Boxplot à partir de sous groupes
    Bonjour !

    J'ai encore une question toute simple. Alors voilà je vais carrément tout vous expliquer ce sera plus simple : je travaille sur une étude agronomique j'ai dans ma base de données une colonne (une variable) avec plusieurs types de culture, donc des données qualitatives et dans une autre colonne (mon autre variable) des essais sur ces cultures (des données quantitatives)
    Je veux faire un boxplot de ces essais en fonction de groupe de culture. C'est à dire que je veux séparer ma première colonne en différents sous groupes. Donc voici ce que j'écris :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    data$lnEF1a_F<-log(data$EF1a_F)
    data$classe1<-0
    data$classe2<-0
    data$classe3<-0
    data$classe4<-0
    data$classe1<-data$V16 %in% c("BLE TENDRE","BLE DUR","COLZA")
    data$classe2<-data$V16 %in% c("BETTERAVE","POMME DE TERRE","SOJA")
    data$classe3<-data$V16 %in% c("MAIS FOURRAGE")
    data$classe4<-data$V16 %in% c("MAIS GRAIN")
    plot(lnEF1a_Fgraminearum~classe1 + classe2 + classe3 + classe4, data)

    C'est sur les conseils de ma responsable que j'ai écris ce script ... apparemment pour sélectionner certaines données d'une colonne et en faire un groupe il faut créer une nouvelle colonne, pour laquelle les valeurs valent zéro (ça je ne comprends pas pourquoi) et ensuite remplacer ces données par celles du la colonne d'origine.. Et donc pour chaque groupe il faut recréer une colonne (classe 1, 2..)

    Le boxplot qui en sort à l'axe x et y en logarithme avec un nuage de point centré sur le zéro (en y)... nulissime en somme je souhaite juste avoir mes classes de cultures en abscisse et mes valeurs en logarithme en ordonnée...

    Voyez vous où est le problème ?

    Merci

  2. #2
    Membre éprouvé
    Inscrit en
    Mars 2009
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 94
    Par défaut
    Pour faire un boxplot en fonction d'une donnée qualitative rien de plus simple avec la commande boxplot()

    exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    data(iris)
    boxplot(Sepal.Length ~ Species,data=iris,col=c("red","green","blue"))
    Après si tu veux superposer les points sur tes boites, tu peux faire un beeswarm plot à l'aide du package beeswarm et la commande :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    beeswarm(Sepal.Length ~ Species,data=iris,add=T)

  3. #3
    Membre averti
    Femme Profil pro
    Inscrit en
    Mars 2013
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Mars 2013
    Messages : 54
    Par défaut
    Je suis d'accord mais là mon problème est ailleurs : je veux faire des sous groupes de ma variable qualitative ! et ensuite faire mon box plot à partir de ces sous groupes (ou comme nommé dans mon script : "classe")

  4. #4
    Inactif  
    Profil pro
    " "
    Inscrit en
    Janvier 2008
    Messages
    330
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : " "

    Informations forums :
    Inscription : Janvier 2008
    Messages : 330
    Par défaut
    Bonjour,

    Essaye ce bout de code pour voir: Cl.1, ..., Cl.4 sont les quatre classes, tu pourras les renommer si nécessaire.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Classe <- sapply(levels(as.factor(DATA$V16)), switch,
                 "BLE TENDRE" = "Cl.1", 
                 "BLE DUR" = "Cl.1",
                 "COLZA" = "Cl.1",
                 "BETTERAVE" = "Cl.2",
                 "POMME DE TERRE" = "Cl.2",
                 "SOJA" = "Cl.2",
                 "MAIS FOURRAGE" = "Cl.3",
                 "MAIS GRAIN" = "Cl.4",            
                 USE.NAMES=FALSE)
     
    Classe <- as.factor(Classe)
    DATA.new <- data.frame(DATA, Classe=classe)
    boxplot(log(Var.quanti)~Classe, data=DATA.new ,col=1:4)
    BC

  5. #5
    Membre averti
    Femme Profil pro
    Inscrit en
    Mars 2013
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Mars 2013
    Messages : 54
    Par défaut
    à l'étape
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Classe <- as.factor(Classe)
    j'ai comme message d'erreur :

    Erreur dans sort.list(y) : 'x' doit être atomique pour 'sort.list'
    Avez-vous appelé 'sort' sur une liste ?



    :S en fait je ne comprends pas ce que veut dire atomique ou recursif

  6. #6
    Inactif  
    Profil pro
    " "
    Inscrit en
    Janvier 2008
    Messages
    330
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : " "

    Informations forums :
    Inscription : Janvier 2008
    Messages : 330
    Par défaut
    Je n'ai pas testé ce code sur un vrai jeu de donnée, mais sur des données simulées et ça a marché. Pour ta question, je n'ai pas utilisé de sort et que la variable Classe est un vecteur pour moi et non une liste. Verifiesces details dans ton code pour voir. A l'avenir pour eviter ce genre de souci essaies de mettre un exemple de votre jeu de données.
    Voila ce que j'ai fait:
    (ceci suppose que V.16 est un facteur )
    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
    V.16 <- c("BLE TENDRE", "BLE DUR", "COLZA", "BETTERAVE", "POMME DE TERRE", "SOJA",
              "MAIS FOURRAGE","MAIS GRAIN" )
     
    Classe <- sapply(levels(as.factor(V.16)), switch,
                 "BLE TENDRE" = "Cl.1", 
                 "BLE DUR" = "Cl.1",
                 "COLZA" = "Cl.1",
                 "BETTERAVE" = "Cl.2",
                 "POMME DE TERRE" = "Cl.2",
                 "SOJA" = "Cl.2",
                 "MAIS FOURRAGE" = "Cl.3",
                 "MAIS GRAIN" = "Cl.4",            
                 USE.NAMES=FALSE)
    class(Classe) # ceci est un vecteur et non un e liste 
    Classe <- as.factor(Classe)
    DATA.new <- data.frame(DATA, Classe=classe)
    boxplot(log(Var.quanti)~Classe, col=1:4)
    Esperant vous avoir eclairci, la demarche.
    BC

Discussions similaires

  1. Réponses: 2
    Dernier message: 15/03/2006, 18h32
  2. Somme d'un calcul d'un sous-groupe
    Par loutsky dans le forum Access
    Réponses: 11
    Dernier message: 15/03/2006, 09h16
  3. Choix d'un état à partir d'un groupe d'options
    Par Daniel MOREAU dans le forum Access
    Réponses: 2
    Dernier message: 07/10/2005, 16h07
  4. [Regex] Expressions régulières: sous groupe
    Par debdev dans le forum Collection et Stream
    Réponses: 12
    Dernier message: 07/07/2005, 14h10
  5. Selection de Groupes ki ne sont pas sous groupes...
    Par superdada dans le forum Langage SQL
    Réponses: 2
    Dernier message: 23/07/2003, 14h42

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