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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2015
    Messages : 5
    Par défaut Aide concernant une table pour laquelle on ne veut que les individus pour lesquels le taux ne change pas (R)
    Bonjour, je vous explique mon problème
    Je dispose d'une base de donnée de la forme :
    Identifiant Taux
    01C 2.5
    01C 2.5
    01C 2.5
    02B 3.4
    02B 3.1
    03A 0.8
    03A 0.6


    Je recherche un code qui me permet d'obtenir une table avec les identifiants pour lesquels le taux de changes pas (restent le même) et une avec ceux pour lesquels le taux changes

    Table souhaitée 1:

    01C 2.5

    Identifiant Taux
    01C 2.5
    01C 2.5
    01C 2.5

    Table souhaitée 2 :
    Identifiant Taux
    02B 3.4
    02B 3.1
    0.3A 0.8
    0.3A 0.6

    Je suis partit sur l'idée d'une boucle qui en regarderait la variance du taux si cette dernière est égale à 0 alors ça m'afficherait les identifiant pour lesquels le taux ne varie pas seulement ca ne semble pas fonctionné.
    Voici ce que j'ai codé pour le moment : (le jeu de donnée fait 2650 lignes et la base s'appelle data)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    for (l in 1:maxobs) {
    maxobs = nrow(data)
    if ((data$Identifiant[l] == data$Identifiant[l+1]) && (var(c(data$Taux[l],data$Taux[l+1])) != 0))
    data[l:l+1,] 
    else if 
     
    }
    je souhaiterais donc obtenir deux nouvelles bases (en 1 : La table souhaitée 1 et en 2 la table souhaitée 2)
    Merci d'avance pour votre aide.

  2. #2
    Membre Expert
    Inscrit en
    Novembre 2009
    Messages
    707
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 707
    Par défaut Aide concernant une table pour laquelle on ne veut que les individus pour lesquels le taux de change pas (R)
    Bonjour,

    Voici une piste :

    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
    > df <- data.frame(Identifiant=c("01C","01C","01C","02B","02B","03A","03A"),
    +                  Taux=c(2.5,2.5,2.5,3.4,3.1,0.8,0.6))
    > df$id_taux <- paste(df$Identifiant,df$Taux,sep="_")
    > df
      Identifiant Taux id_taux
    1         01C  2.5 01C_2.5
    2         01C  2.5 01C_2.5
    3         01C  2.5 01C_2.5
    4         02B  3.4 02B_3.4
    5         02B  3.1 02B_3.1
    6         03A  0.8 03A_0.8
    7         03A  0.6 03A_0.6
    > table(df$id_taux)
     
    01C_2.5 02B_3.1 02B_3.4 03A_0.6 03A_0.8 
          3       1       1       1       1
    Il semble que vous ne soyez pas le seul faire cet exercice (voir ici).

    À vous de jouer pour la suite,

    Cordialement,

  3. #3
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2015
    Messages : 5
    Par défaut
    Bonjour, merci pour votre réponse.
    Cela me crée une nouvelle variable qui est la concaténation de la variable identifiant avec le Taux. Le fait d'obtenir ensuite un tableau des effectifs pour chaque modalité ne me permet pas d'obtenir ce que je souhaite.
    De mon côté je souhaiterai obtenir la même base de donnée qu'au départ mais en ne gardant uniquement les identifiants qui ont un taux constants sachant que je dois pouvoir l'automatiser chaque année en changeant le nombre d'observations donc (l) c'est pourquoi j'ai fait une boucle.

    Merci tout de même pour votre élément de réponse.
    Bien cordialement,

    Julien nesta

  4. #4
    Membre Expert
    Inscrit en
    Novembre 2009
    Messages
    707
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 707
    Par défaut Aide concernant une table pour laquelle on ne veut que les individus pour lesquels le taux de change pas (R)
    Bonjour,

    Il faut éviter de raisonner en boucles :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    > df <- data.frame(Identifiant=c("01C","01C","01C","02B","02B","03A","03A"),
    +                   Taux=c(2.5,2.5,2.5,3.4,3.1,0.8,0.6))
    > df$id_taux <- paste(df$Identifiant,df$Taux,sep="_")
    > df
      Identifiant Taux id_taux
    1         01C  2.5 01C_2.5
    2         01C  2.5 01C_2.5
    3         01C  2.5 01C_2.5
    4         02B  3.4 02B_3.4
    5         02B  3.1 02B_3.1
    6         03A  0.8 03A_0.8
    7         03A  0.6 03A_0.6
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    > n <- as.data.frame(table(df$id_taux))
    > n
         Var1 Freq
    1 01C_2.5    3
    2 02B_3.1    1
    3 02B_3.4    1
    4 03A_0.6    1
    5 03A_0.8    1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    > df <- merge(df,n,by.x="id_taux",by.y="Var1")
    > df1 <- df[which(df$Freq > 1),]
    > df1
      id_taux Identifiant Taux Freq
    1 01C_2.5         01C  2.5    3
    2 01C_2.5         01C  2.5    3
    3 01C_2.5         01C  2.5    3
    > df2 <- df[which(df$Freq == 1),]
    > df2
      id_taux Identifiant Taux Freq
    4 02B_3.1         02B  3.1    1
    5 02B_3.4         02B  3.4    1
    6 03A_0.6         03A  0.6    1
    7 03A_0.8         03A  0.8    1
    Cordialement,

  5. #5
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2015
    Messages : 5
    Par défaut
    Merci une nouvelle fois de bien prendre le temps de me répondre. Après avoir lancé votre code :
    il s'avère que pour df1 en l'occurrence; ma base de donnée faisant environ 2600 lignes j'obtiens une sortie de la forme

    Id Taux
    01A 2.5
    01A 2.5
    01A 2.5
    01A 3.4
    01A 3.4

    bien que la cardinalité du taux pour l'identifiant 01A soit supérieure à 1 pour le taux 2.5 et 3.4 je ne souhaite pas que cet identifiant s'affiche puisque le taux n'est pas constant il passe de 2.5 à 3.4. il varie.
    Merci d'avance pour votre aide.

  6. #6
    Membre Expert
    Inscrit en
    Novembre 2009
    Messages
    707
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 707
    Par défaut Aide concernant une table pour laquelle on ne veut que les individus pour lesquels le taux de change pas (R)
    Bonjour,

    Il suffit de rajouter une étape pour regarder le nombre de id_taux par Identifiant.

    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
    > df <- data.frame(Identifiant=c("01C","01C","01C","02B","02B","03A","03A",
    +                                "01A","01A","01A","01A","01A"),
    +                  Taux=c(2.5,2.5,2.5,3.4,3.1,0.8,0.6,
    +                         2.5,2.5,2.5,3.4,3.4))
    > df$id_taux <- paste(df$Identifiant,df$Taux,sep="_")
    > df
       Identifiant Taux id_taux
    1          01C  2.5 01C_2.5
    2          01C  2.5 01C_2.5
    3          01C  2.5 01C_2.5
    4          02B  3.4 02B_3.4
    5          02B  3.1 02B_3.1
    6          03A  0.8 03A_0.8
    7          03A  0.6 03A_0.6
    8          01A  2.5 01A_2.5
    9          01A  2.5 01A_2.5
    10         01A  2.5 01A_2.5
    11         01A  3.4 01A_3.4
    12         01A  3.4 01A_3.4
    Nombre d'observations par id_taux :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    > n1 <- as.data.frame(table(df$id_taux))
    > names(n1) <- c("id_taux","n1")
    > n1$Identifiant <- substr(n$Var1,1,3)
    > n1
      id_taux n1 Identifiant
    1 01A_2.5  3         01A
    2 01A_3.4  2         01A
    3 01C_2.5  3         01C
    4 02B_3.1  1         02B
    5 02B_3.4  1         02B
    6 03A_0.6  1         03A
    7 03A_0.8  1         03A
    Nombre de id_taux par Identifiant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    > n2 <- as.data.frame(table(n1$Identifiant))
    > names(n2) <- c("Identifiant","n2")
    > n2
      Identifiant n2
    1         01A  2
    2         01C  1
    3         02B  2
    4         03A  2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    > n1 <- merge(n1,n2,by="Identifiant")
    > n1
      Identifiant id_taux n1 n2
    1         01A 01A_2.5  3  2
    2         01A 01A_3.4  2  2
    3         01C 01C_2.5  3  1
    4         02B 02B_3.1  1  2
    5         02B 02B_3.4  1  2
    6         03A 03A_0.6  1  2
    7         03A 03A_0.8  1  2
    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
    > df <- merge(df,n1[,-1],by="id_taux")
    > df
       id_taux Identifiant Taux n1 n2
    1  01A_2.5         01A  2.5  3  2
    2  01A_2.5         01A  2.5  3  2
    3  01A_2.5         01A  2.5  3  2
    4  01A_3.4         01A  3.4  2  2
    5  01A_3.4         01A  3.4  2  2
    6  01C_2.5         01C  2.5  3  1
    7  01C_2.5         01C  2.5  3  1
    8  01C_2.5         01C  2.5  3  1
    9  02B_3.1         02B  3.1  1  2
    10 02B_3.4         02B  3.4  1  2
    11 03A_0.6         03A  0.6  1  2
    12 03A_0.8         03A  0.8  1  2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    > df1 <- df[which(df$n1 > 1 & df$n2 == 1),]
    > df1
      id_taux Identifiant Taux n1 n2
    6 01C_2.5         01C  2.5  3  1
    7 01C_2.5         01C  2.5  3  1
    8 01C_2.5         01C  2.5  3  1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    > df2 <- df[which(!(df$n1 > 1 & df$n2 == 1)),]
    > df2
       id_taux Identifiant Taux n1 n2
    1  01A_2.5         01A  2.5  3  2
    2  01A_2.5         01A  2.5  3  2
    3  01A_2.5         01A  2.5  3  2
    4  01A_3.4         01A  3.4  2  2
    5  01A_3.4         01A  3.4  2  2
    9  02B_3.1         02B  3.1  1  2
    10 02B_3.4         02B  3.4  1  2
    11 03A_0.6         03A  0.6  1  2
    12 03A_0.8         03A  0.8  1  2
    Cordialement,

Discussions similaires

  1. Créer un format à l'aide d'une table SAS
    Par Salamandar dans le forum SAS Base
    Réponses: 3
    Dernier message: 07/06/2011, 18h01
  2. Remplir un TreeView à l'aide d'une table.
    Par Dragonaute dans le forum C#
    Réponses: 0
    Dernier message: 03/06/2010, 23h19
  3. avis et aide sur une table
    Par meryDev dans le forum Windows Forms
    Réponses: 12
    Dernier message: 10/06/2009, 13h44
  4. Besoin d'aide sur une table en SAS
    Par 8twilight8 dans le forum Macro
    Réponses: 8
    Dernier message: 29/04/2009, 15h04
  5. Réponses: 7
    Dernier message: 04/07/2006, 15h22

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