2017-10-20 11 views
0

J'ai une trame de données avec les deux variables suivantes: quantité: num 1213.5 34.5 ... txn_date: POSIXct, format "2017-05-01 12:13:30 "...Transformer la trame de données en séries chronologiques pour le type de date POSIXct

Je veux le transformer en une série temporelle en utilisant ts().

Je commencé à utiliser ce code:

Z < - zoo (données montant de $, order.by = as.Date (as.character (données txn_date de $), format = "% Y /% m /% d% H:% M:% S "))

Mais le problème est que dans ZI perdre les dates. En fait, toutes les dates sont indiquées comme NA.

Comment puis-je le résoudre? Pour mon analyse est important d'avoir la date dans le format:% Y /% m /% d% H:% M:% S par exemple 2017-05-01 12:13:30. Je ne veux pas supprimer le composant time dans la variable txn_date.

Yhan pour votre aide, Andrea

Répondre

0

Je pense que votre prolem vient de la façon dont vous manipulez votre bloc de données, pourrait afficher plus de détails à ce sujet s'il vous plaît?

Je pense que j'ai une solution pour vous. cadre de données I utilisé:

> df1 
$data 
    value 
1 1.9150 
2 3.1025 
3 6.7400 
4 8.5025 
5 11.0025 
6 9.8025 
7 9.0775 
8 7.0900 
9 6.8525 
10 7.4900 

$date 
    %Y-%m-%d 
1 1974-01-01 
2 1974-01-02 
3 1974-01-03 
4 1974-01-04 
5 1974-01-05 
6 1974-01-06 
7 1974-01-07 
8 1974-01-08 
9 1974-01-09 
10 1974-01-10 
> class(df1$data$value) 
[1] "numeric" 
> class(df1$date$`%Y-%m-%d`) 
[1] "POSIXct" "POSIXt" 

Ensuite, je peux créer un temps série en appelant zoo comme ça:

> Z<-zoo(df1$data,order.by=(as.POSIXct(df1$date$`%Y-%m-%d`))) 
> Z 
      value 
1974-01-01 1.9150 
1974-01-02 3.1025 
1974-01-03 6.7400 
1974-01-04 8.5025 
1974-01-05 11.0025 
1974-01-06 9.8025 
1974-01-07 9.0775 
1974-01-08 7.0900 
1974-01-09 6.8525 
1974-01-10 7.4900 

L'important est ici que j'utilise df1$date$%Y-%m-%d au lieu de simplement df1$date

En fait, si j'essaie comme vous l'avez fait, je reçois aussi des valeurs NA:

> Z<-zoo(df1$data,order.by=as.POSIXct(as.Date(as.character(df1$date),format("%Y-%m-%d")))) 
> Z 
    value 
<NA> 1.915 

Pour obtenir le nom de données $ txn_date, vous pouvez utiliser la commande suivante: names(data$txn_date) et essayez ma solution avec votre bloc de données et votre nom.

> names(df1$date) 
[1] "%Y-%m-%d" 
+0

Bonjour Aurelien, merci beaucoup pour votre solution. – user1010441

+0

Je suis malade, mais quand je serai de retour au travail, je vais essayer votre solution élégante. – user1010441

+0

Malheureusement, je ne peux pas vous donner plus de détails parce que les données sont confidentielles. Mais votre solution semble bonne. Je vous ferai savoir bientôt si cela fonctionne. – user1010441