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 :

Base de données


Sujet :

R

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Août 2013
    Messages : 8
    Points : 5
    Points
    5
    Par défaut Base de données
    Bonjour à tous,

    Je suis nouveau sur ce forum et je rencontre des problèmes avec ma base de données concernant le logiciel R.
    Ma base de données est composée de plusieurs colonnes concernant la date: la date en jour, en année, et en semaine. Chaque semaine est numéroté par rapport à l'année. Mon but final est d'avoir une base de données avec les dates en semaines uniquement et en années (car elles dépendent de l'année). J'ai pensé à introduire une valeur unique pour la colonne "date en semaine" et "date en année" mais cela ne fonctionne pas. Je me trouve devant une impasse et ne sais pas comment continuer. J'espère que mon problème est écrit d'une manière compréhensible... en tout cas si vous avez une idée, c'est avec plaisir que je suivrai vos conseils..

  2. #2
    Membre confirmé
    Inscrit en
    Mars 2013
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Mars 2013
    Messages : 208
    Points : 461
    Points
    461
    Par défaut
    Hello,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    paste(tadate_semaine,tadate_annee,sep="/")
    Ensuite tu peux bidouiller avec as.Date pour être sur que ca reconnaisse bien le format semaine et année.

    Exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    as.Date(paste(tadate_semaine,tadate_annee,sep="/"),format="%U/%Y")
    PS:
    Tu devrais au moins montrer quelle tête ont tes données ce serait plus simple de t'aider:

    str() de ta base
    summary() de tes variables

    Et poste le code que tu as essayé car on risque pas de trouver pourquoi ce que tu as fais marche pas.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Août 2013
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Merci pour ta réponse, c'est sympa. J'ai déjà converti en tant que tels les variables. Voici les commandes demandées:

    data.frame': 9384 obs. of 20 variables:
    $ DateM : int 1 1 1 1 1 1 1 1 1 1 ...
    $ Year : int 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 ...
    $ Firms : Factor w/ 12 levels "NESTLE","NOVARTIS",..: 4 4 4 4 4 4 4 4 4 4 ...
    $ Date : Factor w/ 782 levels "01.01.2009","01.01.2010",..: 1 335 28 208 568 541 721 130 285 746 ...
    $ DateS : int 1 3 1 2 4 4 5 2 3 5 ...
    $ BV.PA : num 965560 1105333 965560 949075 1078384 ...
    $ SALES.PA : num 2323510 2659857 2323510 2283841 2595007 ...
    $ PA : num 14.8 12.9 14.8 15.1 13.2 ...
    $ VOL : num 0.531 0.531 0.531 0.531 0.531 ...
    $ CFPS : num 1.75 1.75 1.75 1.75 1.75 ...
    $ EPS : num 1.86 1.86 1.86 1.86 1.86 1.86 1.86 1.86 1.86 1.86 ...
    $ DIV : num 0 0 0 0 0 0 0 0 0 0 ...
    $ Momentum : num NA NA NA NA NA NA -0.56 NA NA -0.418 ...
    $ Stochastic: num 0.2019 0.0375 0.2019 0.2245 0.0659 ...
    $ MA : num NA NA NA NA 13.6 ...
    $ MAstd : num NA NA NA NA 0.352 ...
    $ MACD : num NA NA NA NA NA NA NA NA NA NA ...
    $ ROC : num NA NA NA NA 0.88 ...
    $ Retour : num 0 0.00294 0.06421 -0.04039 0.01147 ...
    $ Rcat : Factor w/ 3 levels "short","neutral",..: 2 2 3 1 2 1 2 1 1 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
    15
    16
    17
    18
    19
    20
     
    DateM Year Firms       Date DateS   BV.PA SALES.PA     PA    VOL  CFPS  EPS
    1     1 2009   ABB 01.01.2009     1  965560  2323510 14.796 0.5309 1.746 1.86
    2     1 2009   ABB 14.01.2009     3 1105333  2659857 12.925 0.5309 1.746 1.86
    3     1 2009   ABB 02.01.2009     1  965560  2323510 14.796 0.5309 1.746 1.86
    4     1 2009   ABB 09.01.2009     2  949075  2283841 15.053 0.5309 1.746 1.86
    5     1 2009   ABB 23.01.2009     4 1078384  2595007 13.248 0.5309 1.746 1.86
      DIV Momentum Stochastic       MA     MAstd MACD       ROC       Retour
    1   0       NA 0.20189773       NA        NA   NA        NA  0.000000000
    2   0       NA 0.03751537       NA        NA   NA        NA  0.002940039
    3   0       NA 0.20189773       NA        NA   NA        NA  0.064206542
    4   0       NA 0.22447724       NA        NA   NA        NA -0.040390620
    5   0       NA 0.06589352 13.61625 0.3523705   NA 0.8800903  0.011473430
         Rcat
    1 neutral
    2 neutral
    3    long
    4   short
    5 neutral
    >

    Tu vois mon problème c'est que j'ai besoin de la variable "DateS" (la date en semaine), et non la date en jour ("Date"). Mes données sont sur 3 ans et chaque semaine est identifiée par rapport à l'année. J'aimerais donc des valeurs uniques des semaines par rapport à l'année, car la variable "DateS" est multiple (car elle est identifiée par rapport au jour). J'ai essayé d'identifier des valeurs uniques à partir des colonnes "DateS" et "Year" pour avoir le résultat souhaité, mais ca n'a rien fonctionné. Je vois pas quelle fonction je pourrais intégrer.... Je sais pas si tu as une idée... en tout cas merci d'avoir répondu!!!

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Août 2013
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Désolé, j'ai fait une erreur auparavant. Voici les variables
    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
    23
     
    > str(echantillon)
    'data.frame':   9384 obs. of  20 variables:
     $ DateM     : int  1 1 1 1 1 1 1 1 1 1 ...
     $ Year      : int  2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 ...
     $ Firms     : Factor w/ 12 levels "NESTLE","NOVARTIS",..: 4 4 4 4 4 4 4 4 4 4 ...
     $ Date      : Factor w/ 782 levels "01.01.2009","01.01.2010",..: 1 335 28 208 568 541 721 130 285 746 ...
     $ DateS     : int  1 3 1 2 4 4 5 2 3 5 ...
     $ BV.PA     : num  965560 1105333 965560 949075 1078384 ...
     $ SALES.PA  : num  2323510 2659857 2323510 2283841 2595007 ...
     $ PA        : num  14.8 12.9 14.8 15.1 13.2 ...
     $ VOL       : num  0.531 0.531 0.531 0.531 0.531 ...
     $ CFPS      : num  1.75 1.75 1.75 1.75 1.75 ...
     $ EPS       : num  1.86 1.86 1.86 1.86 1.86 1.86 1.86 1.86 1.86 1.86 ...
     $ DIV       : num  0 0 0 0 0 0 0 0 0 0 ...
     $ Momentum  : num  NA NA NA NA NA NA -0.56 NA NA -0.418 ...
     $ Stochastic: num  0.2019 0.0375 0.2019 0.2245 0.0659 ...
     $ MA        : num  NA NA NA NA 13.6 ...
     $ MAstd     : num  NA NA NA NA 0.352 ...
     $ MACD      : num  NA NA NA NA NA NA NA NA NA NA ...
     $ ROC       : num  NA NA NA NA 0.88 ...
     $ Retour    : num  0 0.00294 0.06421 -0.04039 0.01147 ...
     $ Rcat      : Factor w/ 3 levels "short","neutral",..: 2 2 3 1 2 1 2 1 1 1 ...

  5. #5
    Membre confirmé
    Inscrit en
    Mars 2013
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Mars 2013
    Messages : 208
    Points : 461
    Points
    461
    Par défaut
    Un simple paste comme je t'ai déjà proposé devrait suffire.


    edit:

    Ou deuxieme solution en repartant de la date complète:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    format(as.Date(echantillon$Date,format="%d.%m.%Y"),"%U.%Y")

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Août 2013
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Merci beaucoup pour ta réponse rapide!, cela semble fonctionner. Le problème c'est que R me donne des valeurs identiques comme voici:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    00.2009" "02.2009" "00.2009" "01.2009" "03.2009" "03.2009" "04.2009"
       [8] "01.2009" "02.2009" "04.2009" "03.2009" "02.2009" "02.2009" "04.2009"
      [15] "01.2009" "04.2009" "04.2009" "03.2009" "01.2009" "01.2009" "03.2009"
      [22] "02.2009" "04.2009" "00.2009" "01.2009" "02.2009" "01.2009" "04.2009"
      [29] "03.2009" "02.2009" "02.2009" "04.2009" "01.2009" "01.2009" "04.2009"
      [36] "02.2009" "03.2009" "03.2009" "04.2009" "00.2009" "01.2009" "03.2009"
      [43] "02.2009" "03.2009" "04.2009" "03.2009" "01.2009" "02.2009" "03.2009"
      [50] "02.2009" "03.2009" "03.2009" "03.2009" "01.2009" "01.2009" "01.2009"
      [57] "04.2009" "00.2009" "02.2009" "02.2009" "04.2009" "04.2009" "00.2009"
      [64] "01.2009" "04.2009" "02.2009" "02.2009" "02.2009" "04.2009" "04.2009"
      [71] "04.2009" "01.2009" "01.2009" "03.2009" "03.2009" "03.2009" "04.2009"
    Je chercherais à avoir une seule et unique valeur pour 01.2009 par exemple pour chacune des firmes de l'échantillon. Je me demandais aussi comment intégrer ce nouveau format dans ma base de données...

  7. #7
    Membre confirmé
    Inscrit en
    Mars 2013
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Mars 2013
    Messages : 208
    Points : 461
    Points
    461
    Par défaut
    Intégrer la nouvelle variable à la base de données:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echantillon$Date_FormatSemaine<-format(as.Date(echantillon$Date,format="%d.%m.%Y"),"%U.%Y")
    Je chercherais à avoir une seule et unique valeur pour 01.2009 par exemple pour chacune des firmes de l'échantillon
    Trier ta base par firme puis date:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echantillon<-echantillon[order(echantillon$Firms,echantillon$Date),]
    Quand pour une même firme tu as plusieurs dates dans une même semaine, tu gardes par défaut le jour le plus avancé de la semaine (et tu supprimes les autres lignes).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echantillon<-echantillon[!duplicated(echantillon[,c(Firms,Date_FormatSemaine)]),]

  8. #8
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Août 2013
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    C'est vraiment une bonne idée, tu m'as fait économisé un temps précieux! Je me permets encore de te montrer le résultat car je trouve la disposition un peu spéciale concernant la base de données

    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
    DateM Year  Firms       Date DateS   BV.PA SALES.PA    PA    VOL  CFPS
    147      1 2009 NESTLE 01.01.2009     1 1175841  2417764 41.60 0.2805 4.275
    394      1 2010 NESTLE 01.01.2010     1 1232410  2083924 50.20 0.1805 4.282
    3512     2 2010 NESTLE 01.02.2010     5 1220256  2063372 50.70 0.2325 4.282
    3749     2 2011 NESTLE 01.02.2011     5 1099651  1619399 51.65 0.1586 4.018
    4261     3 2010 NESTLE 01.03.2010     9 1146746  1939073 53.95 0.1577 4.282
    4532     3 2011 NESTLE 01.03.2011     9 1077741  1587134 52.70 0.1533 4.018
    4822     4 2009 NESTLE 01.04.2009    14 1251023  2572352 39.10 0.2460 4.275
    5070     4 2010 NESTLE 01.04.2010    13 1149944  1944479 53.80 0.1536 4.282
    5334     4 2011 NESTLE 01.04.2011    13 1074683  1582630 52.85 0.1559 4.018
    5587     5 2009 NESTLE 01.05.2009    18 1309288  2692157 37.36 0.2394 4.275
          EPS  DIV Momentum Stochastic       MA     MAstd     MACD       ROC
    147  2.89 1.22       NA  0.2990654       NA        NA       NA        NA
    394  4.89 1.40     0.30  0.7009346 50.45333 0.3092240 27.49868 1.0042008
    3512 4.89 1.40    -0.25  0.7242991 50.20167 0.3399199 27.19576 1.0250708
    3749 2.89 1.60    -2.85  0.7686916 52.11250 0.4752453 27.46982 0.9810066
    4261 2.92 1.60     3.25  0.8761682 52.10000 0.7922391 28.67287 1.0757727
    4532 2.60 1.85     1.05  0.8177570 52.49583 0.3013095 28.51223 1.0019011
    4822 4.87 1.40     2.62  0.1822430 37.45500 0.3689957 20.35385 1.0665576
    5070 2.92 1.60    -0.05  0.8691589 53.87917 0.1002752 29.09384 0.9944547
    5334 2.60 1.85     0.90  0.8247664 51.63167 0.2944061 27.79966 1.0625251
    5587 4.87 1.40    -1.12  0.1009346 37.78833 0.5159445 19.99460 0.9754569
               Retour    Rcat Date_FormatSemaine
    147   0.000000000 neutral            00.2009
    394   0.014940239    long            00.2010
    3512  0.002958580 neutral            05.2010
    3749  0.003872217 neutral            05.2011
    4261  0.005560704 neutral            09.2010
    4532 -0.001897533 neutral            09.2011
    4822  0.009207161 neutral            13.2009
    5070  0.000000000 neutral            13.2010
    5334  0.004730369 neutral            13.2011
    5587  0.041220557    long            17.2009
    >
    En fait, je comprend pas bien comment R arrange les données.... il me semble que le logiciel commence systématiquement avec le 1 janvier indépendemment de l'année....et je comprends pas pourquoi la variable "Date_FormatSemaine" commence par la semaine zéro.... en tout cas Merci bien de tes réponses!

  9. #9
    Membre confirmé
    Inscrit en
    Mars 2013
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Mars 2013
    Messages : 208
    Points : 461
    Points
    461
    Par défaut
    Effectivement il y a un problème dans le tri.

    Recommence mais cette fois en lancant cette ligne pour trier par firme et par date avant de faire dupplicated:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echantillon<-echantillon[order(echantillon$Firms,as.Date(echantillon$Date,format="%d.%m.%Y"),]

    Edit: pour la semaine 0 je pense que c'est parce qu'il s'agit de la 52e semaine de l'année d'avant. Rien d'anormal donc.

  10. #10
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Août 2013
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Merci beaucoup, mais R calcule une erreur, apparemment de crochet, mais je vois pas vraiment ce qui ne fonctionne pas...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    > 
    > load(file=paste (ddpath ,  "echantillon.RData",  sep=""),)
    > 
    > echantillon$Date_FormatSemaine<-format(as.Date(echantillon$Date,format="%d.%m.%Y"),"%U.%Y")
    > 
    > echantillon<-echantillon[order(echantillon$Firms,as.Date(echantillon$Date,format="%d.%m.%Y"),]
    Erreur : ']' inattendu(e) dans "echantillon<-echantillon[order(echantillon$Firms,as.Date(echantillon$Date,format="%d.%m.%Y"),]"
    >

  11. #11
    Membre confirmé
    Inscrit en
    Mars 2013
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Mars 2013
    Messages : 208
    Points : 461
    Points
    461
    Par défaut
    Il manque une ) desolé, pas pratique d'écrire du code sur le forum ^^"


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    echantillon<-echantillon[order(echantillon$Firms,as.Date(echantillon$Date,format="%d.%m.%Y")),]

  12. #12
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Août 2013
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Non c'est moi j'aurais du voir la parenthèses quand même



    merci beaucoup, ça fonctionne!!!

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

Discussions similaires

  1. Problème Base de données et CRecordSet
    Par LE CHAKAL dans le forum MFC
    Réponses: 3
    Dernier message: 20/08/2002, 12h59
  2. connexion base de donné
    Par saidi dans le forum MFC
    Réponses: 3
    Dernier message: 07/08/2002, 23h22
  3. [Concept] Stabilité d'une base de donnée
    Par lassmust dans le forum Décisions SGBD
    Réponses: 3
    Dernier message: 03/07/2002, 17h16
  4. Bases de données
    Par dev dans le forum C++Builder
    Réponses: 4
    Dernier message: 01/07/2002, 23h55
  5. associer une base de données(access) a un dbgrid
    Par ange1708 dans le forum MFC
    Réponses: 3
    Dernier message: 11/06/2002, 13h18

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