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 :

extraire d'un data frame des numeric contenu dans un factor


Sujet :

R

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 606
    Par défaut extraire d'un data frame des numeric contenu dans un factor
    Bonjour,

    J'ai un data frame contenant des factor, je voudrais savoir comment extraire par exemple la ligne 1 de dt (défini ci-dessous) et avoir dans une variable le vector c(4,5,6,7).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    dt <- data.frame("c1" = c(paste(c(4:7), collapse = " "),
                            paste(c(1:3), collapse = " "),
                            paste(c(8:10), collapse = " "))
    )

  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

  3. #3
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 606
    Par défaut
    Bonjour,

    La commande que vous me proposez ne me renvoie pas la valeur que je souhaite

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    > as.numeric( dt$c1)
    [1] 2 1 3 
    # C'est cela que je souhaite obtenir: 4 5 6 7

  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
    En effet, j'avais lu trop rapidement la question.

    Pour extraire les valeurs de la ligne n, le code est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    as.numeric( unlist( strsplit( as.character( dt$c1[n]), " ")))
    as.character récupère la valeur du niveau en termes de chaine de caractères (label du facteur, cf. fonction factor))
    strsplit découpe la chaine de caractères en utilisant comme séparateur " " et donne une liste
    unlist supprime la liste

    Pour convertir d'un seul coup toutes les valeurs de la colonne et pouvoir les récupérer une à une, il suffit d'écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    res <- lapply( strsplit( as.character( dt$c1), " "), as.numeric)
    res[[n]] donne le vecteur des valeurs pour dt$c1[n]

    Si une valeur n'est pas un chiffre, on récupère NA

  5. #5
    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 alternative avec la librairie stringi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    library(stringi)
    as.numeric(unlist(stri_split_fixed(dt$c1, " ")))
    cdlt

  6. #6
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 606
    Par défaut
    Bonjour,

    Merci de vos aides.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 21/06/2011, 12h06
  2. Extraire une sous data.frame
    Par manoir dans le forum R
    Réponses: 4
    Dernier message: 10/07/2009, 14h39
  3. Utiliser des fonctions contenues dans un fichier .bas
    Par usbeck dans le forum Visual C++
    Réponses: 4
    Dernier message: 11/08/2006, 12h03
  4. Réponses: 2
    Dernier message: 20/02/2004, 08h47
  5. Réponses: 2
    Dernier message: 12/01/2004, 13h56

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