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 :

un groupe de colonnes en une seule colonne


Sujet :

R

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Analyse système
    Inscrit en
    Septembre 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Autre

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Septembre 2014
    Messages : 11
    Points : 5
    Points
    5
    Par défaut un groupe de colonnes en une seule colonne
    Bonjour,

    J'ai des deux fichier au format .txt A et B:
    Le fichier A contient des valeurs l'un au-dessous l'autre (391 valeurs).
    Le fichier B contient des valeurs sous forme de pls. colonnes ( 17 colonnes) et chaque colonne contient 23 valeurs (les valeurs séparées par deux points)
    J’aimerai d'écrire un code en R, qui permettre :
    1/ pour le fichier B: copie les colonne l'une au-dessous l'autre pour former une seul colonne
    2/ recopie cette colonne résultante dans le fichier A
    3/puis calculer la différence entre les deux colonnes.
    Cette opération sera répétée pour plusieurs fichiers.

    Voir les fichiers attachés
    Fichiers attachés Fichiers attachés
    • Type de fichier : txt A.txt (3,4 Ko, 53 affichages)
    • Type de fichier : txt B.txt (3,4 Ko, 41 affichages)

  2. #2
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Corse (Corse)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 476
    Points : 831
    Points
    831
    Par défaut
    bonjour , une solution avec le tidyverse

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    library(tidyverse)
    ## les fichiers A.txt et B.txt sont dans le répertoire courant
    ## import fichier
    a <- read.csv("A.txt", header = FALSE,col.names = "col_A")
    b <- read.delim("B.txt",header = FALSE, sep = ":")
    ##on transforme b en une colonne
    b <- pivot_longer(b,cols = starts_with("V"),values_to = "col_B" ) %>% select(col_B)
    ## on lie les 2 dataframes et on calcule la difference des 2 premières colonnes
    a <- a %>% bind_cols(b) %>% mutate(diff = col_A - col_B)
    cldt

  3. #3
    Futur Membre du Club
    Femme Profil pro
    Analyse système
    Inscrit en
    Septembre 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Autre

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Septembre 2014
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    Est-ce que c'est possible de le modifier pour répéter le script sur plusieurs fichiers :1A, 2A, 2A...etc 1B,2B,3B...etc. puis sauvegarder tous les fichiers dans un répertoire.

  4. #4
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Corse (Corse)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 476
    Points : 831
    Points
    831
    Par défaut
    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
     
    ## tu crèe une fonction qui fait le m^me traitement que précédemment les parametres sont les noms de fichier A et B
    traiter_fichier <- function(fichier_a,fichier_b){
      a <- read.csv(fichier_a, header = FALSE,col.names = "col_A")
      b <- read.delim(fichier_b,header = FALSE, sep = ":")
      b <- pivot_longer(b,cols = starts_with("V"),values_to = "col_B" ) %>% select(col_B)
      a <- a %>% bind_cols(b) %>% mutate(diff = col_A - col_B)  
    }
     
    ## tu crèes les 2 listes de fichiers A et B
    ## les 2 listes ont la même taille
    liste_fichier_a=c("A1.txt","A2.txt",...)
    liste_fichier_b=c("B1.txt","B2.txt",...)
     
    ## cette commande génère les dataframes que tu souhaites
    ## la fonction map2 prends au minimum 3 arguments , 2 listes de même tailles sur lesquelles la fonction va itérer ,le troisième  paramètre est la fonction qui prend elle-même en paramètres un élément de chacune des listes
    liste_resultat <- map2(liste_fichier_a,liste_fichier_b,traiter_fichier)
     
    ##jour accéder au premier dataframe
    liste_resultat[[1]]

  5. #5
    Futur Membre du Club
    Femme Profil pro
    Analyse système
    Inscrit en
    Septembre 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Autre

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Septembre 2014
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par xavier-Pierre Voir le message
    ...
    ça n'a pas marché....
    je dois ajouter les chemins de mes fichiers?

  6. #6
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Corse (Corse)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 476
    Points : 831
    Points
    831
    Par défaut
    oui ou tu définis le répertoire courant où se trouvent les fichiers

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    setwd("le_chemin_de mes_fichiers")

Discussions similaires

  1. Réponses: 6
    Dernier message: 28/02/2014, 17h07
  2. Group by et count : une seule ligne renvoyée
    Par okoweb dans le forum Langage SQL
    Réponses: 14
    Dernier message: 24/10/2011, 11h55
  3. [Débutant] DISTINCT sur une seule des colonnes ?
    Par Neilos dans le forum Langage SQL
    Réponses: 9
    Dernier message: 23/06/2004, 23h04
  4. Recherche multi-mots sur une seule colonne
    Par Badiste dans le forum Langage SQL
    Réponses: 2
    Dernier message: 31/03/2004, 11h24
  5. Resultat requete dans une seule colonne
    Par mathieu--g dans le forum Sybase
    Réponses: 2
    Dernier message: 08/07/2003, 13h42

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