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 :

Calcul du prorata dans une dataframe


Sujet :

R

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2019
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Novembre 2019
    Messages : 22
    Points : 23
    Points
    23
    Par défaut Calcul du prorata dans une dataframe
    Bonjour tous le monde, j'ai une dataframe avec plusieurs variables, il s'agit de parcelles recevant plusieurs traitements, et je veux garder que 4 traitements au max mais dispatcher le reste de la quantité des autres traitements que je n'ai pas garder sur les 4 premiers traitements au prorata de la quantité reçue pour chaque traitement, je ne sais est-ce que j'était un peu claire ou non !! je vais essayer de répondre à vos question comme d'habitude pour résoudre ce problème.
    le tableau comme celui là :

    N° parcelle 1 traitement 2 traitement 3 traitement 4 traitement 5 traitement 6 traitement 7 traitement
    1 20 25 15 68 21 45 34
    2 15 20 25
    3 56 41 25 89 15 20
    4 49 87 52 68 97 45
    5 14 57 26 74


    par exemple pour la 1ère parcelle garder les 4 premiers traitement mais les 5,6 et 7 ième leur somme de quantité la dispatcher au prorata de la quantité reçue par les 4 premier traitements, par contre pour les parcelles 2 et 5 garder que les traitements existants.

  2. #2
    Membre averti
    Homme Profil pro
    Data scientist
    Inscrit en
    Février 2017
    Messages
    211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Data scientist
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2017
    Messages : 211
    Points : 343
    Points
    343
    Par défaut
    Bonjour,
    qu'est-ce que tu veux dire par "dispatcher au prorata de la quantité reçue par les 4 premier traitements" ;

    par exemple la parcelle N°1.

    Merci.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2019
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Novembre 2019
    Messages : 22
    Points : 23
    Points
    23
    Par défaut
    Citation Envoyé par marou1991 Voir le message
    Bonjour,
    qu'est-ce que tu veux dire par "dispatcher au prorata de la quantité reçue par les 4 premier traitements" ;

    par exemple la parcelle N°1.

    Merci.
    Par exemple pour la parcelle 1 , les traitements de 5 à 7 apportent un total de 100,
    si on voit les traitements de 1 à 4, leur quantité globale est 128 dont le 1 traitement présente 16%, le 2 présente 20%, le 3 ième 12% et le 4 ième 53%,
    du coup je cherche que les 100 calculé au début soit dispatcher sur les 4 premiers traitements à raison de 16%, 20%, 12% et 53% .

    et tous cela si les traitements dépassent 4

  4. #4
    Membre averti
    Homme Profil pro
    Data scientist
    Inscrit en
    Février 2017
    Messages
    211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Data scientist
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2017
    Messages : 211
    Points : 343
    Points
    343
    Par défaut
    Hello

    essaye ca

    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
     
     
    df <- as.data.frame( matrix(c(1,20,25,15,68,21,45,34,2,15,20,25,rep(NA,4)
      ,3,56,41,25,89,15,20,NA,4,49,87,52,48,97,45,NA,
    5,14,57,26,74,rep(NA,3)) , ncol = 8 , nrow = 5, byrow = T ))
     
    colnames(df) <- c('Parcel', paste('traitement' , 1:7))
    df
     
    df$temp <- ifelse(is.na(df$`traitement 5`) , 0 , 1)
     
    df_v2 <- df
     
    for ( i in 1:nrow(df))
    {if(df$temp[i] == 1)
    {df_v2[i, 2:5] <- df_v2[i, 2:5] + round(df[i,2:5]/sum(df[i,2:5], na.rm = T) * sum(df[i,6:8], na.rm = T))}
     
     else
     {
        df_v2[i, ]  <- df_v2[i, ]
     }
    }

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2019
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Novembre 2019
    Messages : 22
    Points : 23
    Points
    23
    Par défaut
    merci beaucoup pour votre réponse je vais l'essayer

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

Discussions similaires

  1. [Tableaux] calcul de lignes dans une colonne
    Par carmen256 dans le forum Langage
    Réponses: 6
    Dernier message: 24/07/2007, 19h31
  2. Réponses: 3
    Dernier message: 24/03/2007, 22h35
  3. [VBA] Calcul pour insérer dans une textebox
    Par Yanmeunier dans le forum IHM
    Réponses: 13
    Dernier message: 15/03/2006, 16h38
  4. [Access] Calcule par ligne dans une requête
    Par Belze dans le forum Langage SQL
    Réponses: 2
    Dernier message: 13/02/2006, 09h09
  5. Calcul de différence dans une requête
    Par Le Pharaon dans le forum Langage SQL
    Réponses: 8
    Dernier message: 19/05/2005, 13h16

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