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 :

division ligne par ligne de certaines colonnes de façon automatique


Sujet :

R

  1. #1
    Membre à l'essai
    Homme Profil pro
    AgroParisTech
    Inscrit en
    Mai 2020
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : AgroParisTech
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mai 2020
    Messages : 22
    Points : 19
    Points
    19
    Par défaut division ligne par ligne de certaines colonnes de façon automatique
    Bonjour à tous,

    Voici mon jeu de données :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    df <- data.frame(parcelle = c(11, 12, 13, 14, 15, 16),
                     sp  = c(20,12,14,10,41,92),
                     dou = c(15,14,11,15,16,10),
                     het = c(11,0,12,11,16,20),
                     chx =c(11,0,21,0,16,0),
                     freq = c(51,25,84,46,53,30))
    J'aimerai diviser chaque colonne, de "sp" à "chx" par la colonne "freq" puis multiplier le tout par des constantes (sp = sp/freq*1000/4*3,14). Effectuer le calcul n'est pas le problème. Là où je bloque c'est de réussir à effectuer le calcul pour tous les jeux de données de ce type, c'est-à dire quel que soit le nombre de colonne ou l'intitulé des colonnes entre "parcelle" et "freq".

    Voici ce que ça donnerait de façon "manuelle" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    df$`sp` <- ((df$`sp`/df$`freq`)*10000)/(4*3.14)
    df$`dou` <- ((df$`dou`/df$`freq)`*10000)/(4*3.14)
    df$`het` <- ((df$`het`/df$`freq`)*10000)/(4*3.14)
    df$`chx` <- ((df$`chx`/df$`freq`)*10000)/(4*3.14)
    Si vous avez des idées pour "automatiser" le calcul, je suis preneur.
    Merci.

    Bonne joiurnée,
    David

  2. #2
    Expert confirmé
    Avatar de olivier.decourt
    Homme Profil pro
    Formateur R/SAS/statistiques
    Inscrit en
    Avril 2008
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Activité : Formateur R/SAS/statistiques
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 064
    Points : 4 478
    Points
    4 478
    Par défaut
    Bonjour David.
    Une solution avec le package {dplyr} :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    df <- df %>% 
                         mutate_at(  # calculer sur toutes ces colonnes
                                        vars( - parcelle, - freq) ,  # toutes sauf ...
                                        ~ (. / freq *10000) / (4*pi)   # l'opération à faire systématiquement (le ~ pour indiquer le début de la formule, le . pour désigner la colonne courante)
                          )
    Sur le même modèle il y a des fonctions mutate_if et mutate_all pour systématiser les calculs selon le type des variables ou sur toutes les colonnes.
    Bon courage.
    Olivier

  3. #3
    Membre à l'essai
    Homme Profil pro
    AgroParisTech
    Inscrit en
    Mai 2020
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : AgroParisTech
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mai 2020
    Messages : 22
    Points : 19
    Points
    19
    Par défaut
    Difficile d'être plus clair! Merci beaucoup pour votre réponse.

    David

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 13/05/2019, 22h49
  2. [XL-2010] Copier lignes et certaines colonnes sous condition
    Par CactusMalus dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 04/11/2014, 13h05
  3. créer des groupes de lignes pour chaque onglet de façon automatique
    Par cindy1808 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 03/07/2009, 19h50
  4. Réponses: 7
    Dernier message: 11/06/2009, 14h28
  5. [VBA-E]Selection d'une ligne a partir d'une certaine colonne
    Par deathsurfer dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 29/06/2006, 16h36

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