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 :

enregistrer en fonction des noms de colonnes


Sujet :

R

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations forums :
    Inscription : Mars 2012
    Messages : 13
    Points : 6
    Points
    6
    Par défaut enregistrer en fonction des noms de colonnes
    Bonjour,

    J'ai une petite question à vous soumettre.
    J'ai un tableau de données dont les colonnes portent les noms suivants:

    "ST001_data1" "ST001_data2" "ST004_data1" "ST004_data2" etc...

    J'aimerais en fait simplement enregistrer ces données dans différents fichiers .csv de sortie. J'aimerais par exemple enregistrer toutes les données de ST001 dans un fichier, les données de ST002 dans un autre, etc... (donc enregistrer dans un même fichier les colonnes qui ont le ST001 ou ST004 ... en commun.
    Comment peut-on faire ça sous R? (en sachant que ça doit être automatique: les numéros ne se suivent pas forcément et les positions et le nombre de colonnes peut varier donc il faudrait faire la reconnaissance uniquement à partir du STxxx si possible).
    Un grand merci d'avance!

  2. #2
    Modératrice

    Femme Profil pro
    Statisticienne, Fondatrice de la société DACTA
    Inscrit en
    Juin 2010
    Messages
    893
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Statisticienne, Fondatrice de la société DACTA

    Informations forums :
    Inscription : Juin 2010
    Messages : 893
    Points : 2 673
    Points
    2 673
    Par défaut
    Bonjour,

    Voilà comment j'aurais procédé avec un petit exemple :

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    # chargement des données (à appliquer à votre cas)
    mydata<-read.csv("mydata",header=TRUE,sep="\t") 
    mydata
     ST001_data1 ST001_data2 ST004_data1 ST004_data2 ST004_data3 ST005_data1
    1           1           1           4           4           4           5
    2          11          11          44          44          44          55
    3         111         111         444         444         444         555
    4           1           1           4           4           4           5
     
    COL<-colnames(mydata)
    COL
    [1] "ST001_data1" "ST001_data2" "ST004_data1" "ST004_data2" "ST004_data3"
    [6] "ST005_data1"
     
    a<-strsplit(COL,"_") # va séparer les noms de colonnes selon le caractère "_"
    a
    [[1]]
    [1] "ST001" "data1"
     
    [[2]]
    [1] "ST001" "data2"
     
    [[3]]
    [1] "ST004" "data1"
     
    [[4]]
    [1] "ST004" "data2"
     
    [[5]]
    [1] "ST004" "data3"
     
    [[6]]
    [1] "ST005" "data1"
     
    NAMES<-unique(sapply(a,function(x) { return(x[1]) })) # va permettre de récupérer les "premières parties" (avant le underscore) des noms des colonnes et va supprimer les doublons (fonction "unique")
    NAMES
    [1] "ST001" "ST004" "ST005"
     
    # fonction permettant de récupérer les données correspondant à un ST00.. donné et de les écrire dans le fichier csv correspondant
    myfunction<-function(N,mat=mydata)
    {
    	u<-grep(N,colnames(mat))
    	M<-mat[,u]
     
    	filename=paste(N,".csv",sep="")
     
    	write.csv(M,file=filename,row.names=FALSE)
    }
     
    # on va appliquer la fonction précédente à tous les éléments de NAMES (la fonction sapply va nous permettre d'éviter de faire une boucle sur chacun des éléments de NAMES)
    sapply(NAMES,myfunction)
    Si vous avez des questions sur le détail de ce code, n'hésitez pas !
    Bonne continuation


    Cordialement,

    A.D.

    Forum R
    Fournir le code utilisé (pensez aux balises code !), les packages nécessaires, ainsi qu'un court mais représentatif extrait du jeu de données et les éventuels messages d'erreur.
    Recherche d'informations concernant R : RSiteSearch / tutoriels : http://r.developpez.com/cours/ .

    Pensez également au bouton "Résolu" et à voter (en bas à droite des messages) lorsque vous avez obtenu une réponse satisfaisante.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations forums :
    Inscription : Mars 2012
    Messages : 13
    Points : 6
    Points
    6
    Par défaut
    C'est parfait!

    Merci pour votre réponse très détaillée et pour le temps consacré! Avec autant de détails, point besoin de poser davantage de questions ^^

    Bonne continuation pareillement

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

Discussions similaires

  1. Recherche des enregistrements en fonction des paramètres
    Par infoctet dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 10/01/2007, 09h51
  2. select des noms de colonne d'une table
    Par Juan dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 18/09/2006, 15h14
  3. Protection des noms de colonne
    Par wamania dans le forum Langage SQL
    Réponses: 6
    Dernier message: 03/08/2006, 12h36
  4. Réponses: 2
    Dernier message: 10/02/2006, 16h09
  5. [JTable] Créer une JTable vide avec des noms de colonnes.
    Par Cyborg289 dans le forum Composants
    Réponses: 2
    Dernier message: 27/09/2005, 15h54

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