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 :

Tableau présence/ absence


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
    Mai 2019
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2019
    Messages : 14
    Par défaut Tableau présence/ absence
    Bonjour,

    J'ai un souci pour transformer un tableau. Je pense qu'il faut utiliser tidyverse...

    Voici mon tableau :

    placette espece
    EM10 espA
    EM20 espA
    EM30 espB
    PR70 espB
    PR10 espB
    EM10 espC
    PB30 espC
    PR70 espC

    Et j'aimerais qu'il soit de cette façon :

    placette espA espB espC
    EM10 1 0 1
    EM20 1 0 0
    EM30 0 1 0
    PR70 0 1 1
    PR10 0 1 0
    PB30 0 0 1

    En fait c'est un passage d'un tableau d'occurrence à un tableau de présence/absence
    Merci de votre aide !

  2. #2
    Membre émérite
    Homme Profil pro
    Chercheur
    Inscrit en
    Décembre 2015
    Messages
    327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2015
    Messages : 327
    Par défaut
    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
     
    # donnees
    tab <- data.frame( placette=c( "EM10", "EM20", "EM30", "PR70", "EM10", "PB30", "PR70"), espece=c( "espA", "espA", "espB", "espB", "espC", "espC", "espC"))
     
    # je fais l'hypothese que l'option par defaut pour les data.frame est stringsAsFactors=TRUE
    #   liste des especes
    espece <- unique( as.character( tab$espece))
     
    # Construction du tableau logique
    resultat <- aggregate( espece ~ placette, tab, function( x) espece %in% x)
     
    # construction du tableau numerique
    resultat <- aggregate( espece ~ placette, tab, function( x) as.integer( espece %in% x))
     
    # correction du nom des colonnes
    #   concatenation des resultats (aggregate donne un data.frame dont la seconde colonne est un matrice)
    resultat <- cbind( resultat$placette, as.data.frame( resultat$espece))
    #   noms des colonnes
    names( resultat) <- c( "placette", espece)

  3. #3
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2019
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2019
    Messages : 14
    Par défaut
    Bonjour,
    Merci pour le code mais comment je peux faire sans noter les placettes et les espèces une à une ? car j'ai 146 espèces et 26 placettes.
    Merci pour votre aide !

  4. #4
    Membre émérite
    Homme Profil pro
    Chercheur
    Inscrit en
    Décembre 2015
    Messages
    327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2015
    Messages : 327
    Par défaut
    La solution à ta question commence à la ligne 5 de mon code, j'ai rajouté à la main un exemple de tableau/data.frame qui correspond à ton exemple. La construction de ce data.frame peut se faire à la main comme mon exemple ou ce peut être la lecture d'un tableau dans une fichier de type Excel ou csv. Cela dépend de la manière dont tu as recueilli les données.

  5. #5
    Expert confirmé
    Avatar de olivier.decourt
    Homme Profil pro
    Formateur R/SAS/statistiques
    Inscrit en
    Avril 2008
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Activité : Formateur R/SAS/statistiques
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 064
    Par défaut
    Bonjour.
    Autre solution avec la fonction fastDummies::dummy_cols
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    library(fastDummies)
    tab <- data.frame( placette=c( "EM10", "EM20", "EM30", "PR70", "EM10", "PB30", "PR70"), 
                       espece=c( "espA", "espA", "espB", "espB", "espC", "espC", "espC"))
     
    tab2 <- dummy_cols(tab,
                       select_columns = "espece")

  6. #6
    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 autre possibilité :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    res <- xtabs( ~ placette + espece, tab)
    # si tu veux un data.frame
    res <- as.data.frame.matrix(res)
    #si tu as besoin d'un data.frame avec le nom des placettes dans la première colonne
    res <- cbind(placette = rownames(res), res)
    cdlt

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

Discussions similaires

  1. Réponses: 26
    Dernier message: 12/01/2019, 11h17
  2. [Python 2.X] Création d'un tableau de présence ou d'absence de données en fonction du temps
    Par jakes64 dans le forum Calcul scientifique
    Réponses: 4
    Dernier message: 07/02/2017, 13h29
  3. Prédictions sur GLM présence/absence à 2 facteurs
    Par habasque dans le forum MATLAB
    Réponses: 0
    Dernier message: 08/04/2013, 18h33
  4. Détection Présence/Absence d'écran VGA
    Par Skarsnick dans le forum Matériel
    Réponses: 1
    Dernier message: 27/10/2010, 21h15
  5. [phpBB][2] Gérer la présence ou l'absence d'une donnée pour l'afficher
    Par nicolaskarp dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 13/03/2006, 11h40

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