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 :

Utiliser strsplit sur une colonne entière


Sujet :

R

  1. #1
    Membre actif Avatar de habasque
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Septembre 2006
    Messages
    530
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Septembre 2006
    Messages : 530
    Points : 296
    Points
    296
    Par défaut Utiliser strsplit sur une colonne entière
    Bonjour,

    Je cherche à extraire le mois d'un champ date de format "dd/mm/yyyy" de mon dataframe via la fonction strplit.
    Je tente avec le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    monDataFrame$mois_test = strsplit(monDataFrame$MOIS,"/")[[2]]
    mais forcément la colonne "mois_test" se remplit avec le mois de la 2ème ligne du dataFrame.
    Je ne vois pas comment appliquer la fonction strsplit à l'ensemble de mon dataframe.

    Merci d'avance pour votre aide,

  2. #2
    Membre à l'essai
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Juin 2009
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur d'études

    Informations forums :
    Inscription : Juin 2009
    Messages : 15
    Points : 17
    Points
    17
    Par défaut
    Bonjour,

    Est-ce que le code suivant t'aide ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    mois <- 2 # Disons que tes dates sont dans deuxième colonne de ton data.frame "df"
    liste.des.chaines.coupees <- strsplit(as.character(df[,mois]),"/"))
    nouveau.mois <- vector(length=length(df[,mois]))
    for (i in 1:length(df[,mois])){
        # De la i ème chaîne, on prend la deuxième composante (mm dans dd/mm/yyyy)
        nouveau.mois[i] <- liste.des.chaines.coupees[[i]][2] 
    }
     
    #Y a plus qu'à mettre nouveau.mois dans ton data.frame. Par exemple :
    df[,mois] <- nouveau.mois
    Marc

  3. #3
    Membre actif Avatar de habasque
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Septembre 2006
    Messages
    530
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Septembre 2006
    Messages : 530
    Points : 296
    Points
    296
    Par défaut
    Je ne voulais pas faire de boucle mais oui nickel ca fonctionne !

  4. #4
    Membre à l'essai
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Juin 2009
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur d'études

    Informations forums :
    Inscription : Juin 2009
    Messages : 15
    Points : 17
    Points
    17
    Par défaut
    Citation Envoyé par habasque Voir le message
    Je ne voulais pas faire de boucle mais oui nickel ca fonctionne !
    Tu as raison, c'est mieux sans boucle. Je te propose du coup :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    matrix(unlist(liste.des.chaines.coupees), ncol=3, byrow=T)[,2]
    Je pense que ça te renvoie ce que tu veux.

    Marc

  5. #5
    Membre habitué
    Inscrit en
    Mai 2010
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 74
    Points : 164
    Points
    164
    Par défaut
    Salut,
    Si j'ai bien compris t'a une colonne avec des données au format "Date" (sinon au pire on peut faire un as.Date) et tu veux dans une nouvelle colonne avoir les mois. Tu peut utiliser la fonction "format.Date" ou simplement "format" (mais appliqué a un element de type "Date").

    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
    set.seed(123)
    Data <- data.frame(Var1 = rnorm(10),
                       temps =as.Date( c("17/08/2010", "04/05/2010", 
    "03/02/2010", "11/11/2009", "29/08/2008", "01/07/2001", 
    "10/10/1999", "08/04/1996", "10/07/1999", "06/02/2000"), "%d/%m/%Y"))
     
    Data$mois <- format(Data$temps, '%b')
     
    >  head(Data)
          Var1      temps  mois
    1 -0.56048 2010-08-17  août
    2 -0.23018 2010-05-04   mai
    3  1.55871 2010-02-03 févr.
    4  0.07051 2009-11-11  nov.
    5  0.12929 2008-08-29  août
    6  1.71506 2001-07-01 juil.
    A la place de %b tu peut mettre %B pour avoir les mois en toutes lettres ou %m pour avoir les mois en chiffres (eg. 08,05,....)
    En esperant que c'est ce que tu voulais

  6. #6
    Membre actif Avatar de habasque
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Septembre 2006
    Messages
    530
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Septembre 2006
    Messages : 530
    Points : 296
    Points
    296
    Par défaut
    Merci, j'ai retenu la solution de overmarc.

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 03/02/2014, 20h16
  2. Réponses: 4
    Dernier message: 13/11/2009, 15h48
  3. utiliser sort sur une colonne
    Par jane40 dans le forum MATLAB
    Réponses: 4
    Dernier message: 25/04/2009, 13h15
  4. formule sur une colonne entière ?
    Par ANTMA dans le forum Excel
    Réponses: 6
    Dernier message: 01/12/2007, 11h31
  5. Réponses: 2
    Dernier message: 13/07/2007, 12h20

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