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

  1. #1
    Membre actif
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 604
    Points : 206
    Points
    206
    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 éclairé
    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
    Points : 793
    Points
    793

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

    Informations forums :
    Inscription : Février 2013
    Messages : 604
    Points : 206
    Points
    206
    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 éclairé
    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
    Points : 793
    Points
    793
    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 confirmé
    Inscrit en
    Février 2011
    Messages
    276
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 276
    Points : 561
    Points
    561
    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 actif
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 604
    Points : 206
    Points
    206
    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