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 :

récupérer le nom d'une colonne d'un dataframe selon une condition


Sujet :

R

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2019
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2019
    Messages : 8
    Points : 8
    Points
    8
    Par défaut récupérer le nom d'une colonne d'un dataframe selon une condition
    Bonjour,
    J'aimerais récupérer les noms de colonnes pour chaque ligne ayant une valeur non nulle.
    exemple :
    Nom : cap.png
Affichages : 917
Taille : 7,4 Ko

    je veux par exemple pour le premier identifiant : c1 et c3
    pour le deuxième : c2 et c3
    pour le 3 ème : c1 et c3
    et enfin pour le 4 ème : c1 et c2

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    En supposant que la colonne identifiants est la 1re et n'est jamais nulle, je te propose ceci qui crée un tibble avec une ligne par variable non nulle pour un identifiant(donc 8 lignes avec ton exemple, puisque 2 variables non nulles pour chacune des 4 lignes)

    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
    df <- data.frame(
      identifiant = c(1,2,3,4),
      c1 = c(1,0,3,4),
      c2 = c(0,4,0,1),
      c3 = c(1,2,12,0)
    )
    df
     
    library(tibble)
    dfNonNulles <- tibble(id = numeric(0), variableNonNulle = character(0))
    for(ligne in 1:nrow(df)){
      colonnesNonNulles <- names(df)[which(df[ligne,] !=0)][-1]
      dfNonNulles <- add_row(dfNonNulles, id = df[ligne,"identifiant"], variableNonNulle = colonnesNonNulles)
    }
    dfNonNulles

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2019
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2019
    Messages : 8
    Points : 8
    Points
    8
    Par défaut
    Merci beaucoup Muse de Thamir

  4. #4
    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 : 46
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 064
    Points : 4 478
    Points
    4 478
    Par défaut
    Bonjour.
    Une autre solution, sans boucle, en transposant.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    df <- data.frame(
      identifiant = c(1,2,3,4),
      c1 = c(1,0,3,4),
      c2 = c(0,4,0,1),
      c3 = c(1,2,12,0)
    )
     
    df2 <- reshape2::melt(df, id="identifiant")
    df2 <- df2[which(df2$value != 0),]
    Bon courage.
    Olivier

Discussions similaires

  1. Réponses: 3
    Dernier message: 03/02/2012, 10h50
  2. [WD15] Récupérer le nom d'une colonne
    Par thierrybatlle dans le forum WinDev
    Réponses: 5
    Dernier message: 28/09/2010, 15h12
  3. Réponses: 1
    Dernier message: 12/01/2010, 22h18
  4. [MySQL] Récupérer le nom d'une colonne avec le nom de la table
    Par hacksi dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 30/06/2008, 11h15
  5. Récupérer le nom d'une colonne d'une table dans une variable
    Par mimi51340 dans le forum Général Java
    Réponses: 4
    Dernier message: 13/03/2008, 14h23

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