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 :

Rbind et cbind sur un grand jeu de données


Sujet :

R

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mars 2010
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2010
    Messages : 51
    Par défaut Rbind et cbind sur un grand jeu de données
    Bonjour à tous et à toutes,
    En fait, comme je fais de la recherche, je me suis trouvé obligé de travailler avec le package Kappalab, et comme il est écrit en R, j'ai commencé avec des petits programmes pour tester la méthode que j'utilise et ça marche, mais après j'ai trouvé du mal à le faire tourner sur une base plus ou moins grande. Les fonctions que j'utilisais sont : rbind, cbind et overall
    Je m'explique :
    j'ai des données de cette forme (1400 lignes) :
    0.2 0.3 0.5 0.4
    0.1 0.4 0.7 0.6
    le traitement qui va se faire sur ces deux lignes est le suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    a<-c(0.2, 0.3, 0.5)
    b<-c(0.1, 0.4, 0.7)
    C<-rbind(a,b)
    overall<-c(0.4,0.6)
    Imaginez le traitement qui doit se faire sur 1000 lignes
    Le cbind va se répéter 1000 fois! Le rbind va contenir un vecteur de taille 1000, de même pour overall

    Y a t-il quelqu'un qui peut aider svp?

  2. #2
    Membre chevronné
    Homme Profil pro
    MCU
    Inscrit en
    Juillet 2010
    Messages
    185
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : MCU
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2010
    Messages : 185
    Par défaut
    Bonjour,

    En utilisant avec une liste où chaque élément est un de vos vecteurs :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    test <- do.call(rbind, liste)
    Même utilisation avec cbind.

    HTH

    Vincent

  3. #3
    Membre averti
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mars 2010
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2010
    Messages : 51
    Par défaut
    Merci pour ta réponse Vincent.
    Mais je n'arrive pas à comprendre comment incruster cette fonction au lieu du code que j'ai mentionné.
    C'est le premier code que j'écris en R, j'ai un peu cherché :
    http://stat.ethz.ch/R-manual/R-patch...l/do.call.html
    Mais apparemment je vais un peu perdre du temps pour faire tourner cette version avec d.call().
    Si tu peux transformer ce que j'ai écris en ta version, je serais vraiment reconnaissant.
    ps: j'utilise cette méthode juste pour des fins expérimentales, je dois pas passer trop de temps là dessus

  4. #4
    Membre chevronné
    Homme Profil pro
    MCU
    Inscrit en
    Juillet 2010
    Messages
    185
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : MCU
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2010
    Messages : 185
    Par défaut
    Ah, j'ai peut-être été un peu rapide, j'ai considéré que chaque ligne était un élément séparé...

    Sous quelle forme se présentent les données initiales (fichier texte, base de donnée, ...)?
    Quelle est la classe de l'objet qui contient ces données dans R (matrice, data.frame)?

    Cela pourrait peut-être être résolu avec une indexation? Du style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    test2 <- test[, 1:3]
    Overall <- test[, 4]
    HTH

    Vincent

  5. #5
    Membre averti
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mars 2010
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2010
    Messages : 51
    Par défaut
    C'est un fichier texte (1000lignes) de la forme :
    0.2 0.3 0.5 0.4
    0.1 0.4 0.7 0.6

    Je travaille sur la ligne de commande, au début j'allais faire un programme simple en c++, qui permet d'écrire toutes les instructions (rbind, cbind et overal) pour chaque ligne, ça m'évite de les coder manuellement, et après j'allais copier/coller la sortie en ligne de commande. C'est très nul, je sais, mais c'est urgent voilà.

  6. #6
    Membre chevronné
    Homme Profil pro
    MCU
    Inscrit en
    Juillet 2010
    Messages
    185
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : MCU
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2010
    Messages : 185
    Par défaut
    Dans ce cas là, il faut importer le fichier dans R avec la fonction read.table (voir l'aide pour les différents réglages) puis indexer pour extraire d'abord les trois premières colonnes puis la dernière. Ensuite on peut sauvegarder en utilisant la fonction write.table :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ?read.table
    test <- read.table("/chemin/vers/fichier.txt")
    write.table(test[, 1:3], file="/chemin/vers/resultat_col_1_3.txt")
    write.table(test[, 4], file="/chemin/vers/resultat_col_4.txt")
    Si le nombre de colonnes est variable et que l'on veut extraire toutes les colonnes sauf la dernière puis la dernière :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    write.table(test[, 1:(ncol(test) - 1)], file="/chemin/vers/resultat_col_1_3.txt")
    write.table(test[, ncol(test)], file="/chemin/vers/resultat_col_4.txt")
    HTH

    Vincent

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 26/02/2014, 11h14
  2. Proc genmod sur un nouveau jeu de données
    Par walpi dans le forum SAS STAT
    Réponses: 1
    Dernier message: 10/09/2012, 14h32
  3. [Cinéma] Les comics sur le grand écran
    Par BizuR dans le forum Films & TV
    Réponses: 7
    Dernier message: 26/05/2006, 10h40
  4. Opération sur de grands entiers
    Par tutu dans le forum C
    Réponses: 16
    Dernier message: 24/05/2005, 09h56
  5. requete sql sur un grand nombre d enregistrement
    Par marielaure dans le forum Langage SQL
    Réponses: 5
    Dernier message: 13/08/2004, 12h53

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