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 :

Tri selon plusieurs facteurs


Sujet :

R

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Suède

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

    Informations forums :
    Inscription : Avril 2018
    Messages : 40
    Par défaut Tri selon plusieurs facteurs
    Bonjour,

    Je possède le fichier suivant sur excel : Nom : Capture écran.png
Affichages : 525
Taille : 200,1 Ko


    Sous R, je voudrais effectuer un tri de ces chevaux. Tout d'abord, sélectionner les chevaux qui n'ont ni le père et/ou ni la mère en commun (ni frère et soeur ou ni demi-frère et demi-soeur). Ensuite parmi ces chevaux sélectionnés, je souhaiterai les trier par sexe puis par âge.

    Cela est-il possible sous R ? Si oui, comment faire ?

    Merci d'avance

  2. #2
    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,

    sélectionner les chevaux qui n'ont ni le père et/ou ni la mère en commun
    Il peut y avoir une ambiguité ici. Par exemple si tu as trois cheveaux dont deux proviennent du même père mais pas le troisième, est-ce que c'est un choix strict et tu ne gardes quel e troisième ou est-ce que tu conserves le 3ème + l'un des deux autres ? Si tu pars sur la deuxième options :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    tab <- structure(list(Ind = c("Ind_1", "Ind_2", "Ind_3", "Ind_4", "Ind_5", 
    "Ind_6", "Ind_7"), x = structure(c(3L, 1L, 2L, 1L, 3L, 4L, 2L
    ), .Label = c("b", "c", "d", "e"), class = "factor"), y = c("b", 
    "d", "f", "b", "c", "d", "a")), .Names = c("Ind", "x", "y"), row.names = c(NA, 
    -7L), class = "data.frame")
     
    tab[rowSums(sapply(tab[2:3], duplicated)) < 0.5,]
    dans le lapply tu cherches si la valeur est dupliquée et avec le rowSums tu regardes s'il n'y a aucun doublon sur aucune des colonnes (autrement dit pere ou mere différente). Si la condition ne s'établit que sur deux colonnes, le pere et la mere on peut faire comme ça aussi : tab[!do.call("|", lapply(tab[2:3], duplicated)),]. L'avantage est que si on ne veut virer que les individus dont la mère et le près sont différents et non pas la mère ou le père alors on remplace le "|" par "&". Par contre ce code ne fonctionne qu'avec deux colonnes. Sinon il faut le programmer en récursif ou avec une boucle.
    En récursif :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    f <- function(x) {
      if (!inherits(x, "list"))
        stop("x must be a list")
      x[[1]] <- do.call("|", x[1:2])
      x <- x[-2]
      if (length(x) > 1) {
        f(x)
      }
      else {
        return(x[[1]])
      }
    }
     
    f(lapply(tab, duplicated))
    Pour ce qui ets du tri sur plusieurs colonnes c'est possible il suffit de faire tab[do.call(order, tab[cols]),] et tu remplaces cols par un vecteur correspondant au numéro des colonnes que tu veux trier et dans l'ordre. Par exemple tab[do.call(order, tab[2:3]),] trie le tableau tab en commençant par les valeurs de la deuxième colonne puis celle de la troisième.

    cdlt

Discussions similaires

  1. Réponses: 0
    Dernier message: 30/10/2015, 16h05
  2. Requète de tri selon plusieurs critères
    Par gregtix dans le forum Requêtes
    Réponses: 37
    Dernier message: 24/05/2012, 23h03
  3. [MySQL] Trouver un article selon plusieurs critères de tri
    Par HAbroc dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 24/05/2012, 08h58
  4. [V6] Tris selon plusieurs critères
    Par AD1983 dans le forum Webi
    Réponses: 1
    Dernier message: 02/11/2011, 11h03
  5. Tri Liste d'objet selon plusieurs critéres
    Par missd12 dans le forum Langage
    Réponses: 4
    Dernier message: 06/07/2010, 09h15

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