propagation() fonction tidyr
J'ai un PSAC liste de prix des actions comme suit
PERMNO date TICKER RETX
1 10138 2007-01-03 TROW 0.045236
2 10138 2007-01-04 TROW 0.008743
3 10138 2007-01-05 TROW -0.001950
4 10138 2007-01-08 TROW 0.018237
5 10138 2007-01-09 TROW 0.004051
6 10138 2007-01-10 TROW 0.005734
7 10138 2007-01-11 TROW 0.019637
8 10138 2007-01-12 TROW 0.005591
...
1 10145 2007-01-03 HON -0.003095
2 10145 2007-01-04 HON -0.000443
3 10145 2007-01-05 HON -0.009539
4 10145 2007-01-08 HON 0.006047
5 10145 2007-01-09 HON 0.007124
6 10145 2007-01-10 HON -0.006189
7 10145 2007-01-11 HON 0.016681
8 10145 2007-01-12 HON -0.003282
9 10145 2007-01-16 HON 0.001317
10 10145 2007-01-17 HON -0.001754
11 10145 2007-01-18 HON -0.010979
...
Une fois que j'utilise tidyr::spread(x,TICKER,RETX)
, de retour d'une matrice avec la plupart de la valeur NA.
Il est de toute autre fonction pour réorganiser la matrice, d'énumérer tous les prix des actions dans une seule colonne? ou comment réaliser en quelques lignes?
mise à jour:
Je figure, c'est le PERMNO colonne à l'origine du problème. Après je me débarrasser de l'PERMNO colonne un autre problème apparaît:
> spread(A1[,2:4],TICKER,RETX)
Error: Duplicate identifiers for rows (129717, 143815), (129718, 143816), ...
Alors, je viens de choisir au hasard deux rangs mentionné dans le message
PERMNO date TICKER RETX
129717 75104 2007-01-03 CBS 0.012172
> A1[143815,]
PERMNO date TICKER RETX
143815 76226 2007-01-03 CBS 0.01347
Tourner l'ensemble de données est très sale et il contient dupliqué de la série.
Une meilleure solution serait d'utiliser PERMNO en tant que clé.
Voici ce que j'obtiens
date 10225 10516 10909 ...
1 2007-01-03 0.005738 0.003129 -0.006593 ...
2 2007-01-04 -0.011062 -0.005615 0.028761 ...
3 2007-01-05 0.000824 -0.001568 -0.022366 ...
4 2007-01-08 -0.005059 0.005027 -0.003520 ...
5 2007-01-09 0.002956 -0.024383 0.000883 ...
6 2007-01-10 -0.003301 -0.008651 -0.010587 ...
...
C'est frustrant, mais j'ai fini par obtenir quelque chose. Est-il de toute façon à remplacer le numérique nom de la colonne avec les correspondants de presse. Voici une démo
PERMNO date FO HON ...
1 10225 2007-01-03 0.005738 -0.003095 ...
2 10225 2007-01-04 -0.011062 -0.000443 ...
3 10225 2007-01-05 0.000824 -0.009539 ...
4 10225 2007-01-08 -0.005059 0.006047 ...
5 10225 2007-01-09 0.002956 0.007124 ...
6 10225 2007-01-10 -0.003301 -0.006189 ...
7 10225 2007-01-11 0.007925 0.016681 ...
8 10225 2007-01-12 -0.010914 -0.003282 ...
tidyr::spread
(j'ai édité votre question en conséquence). Vous exemple est mauvais car il ne s'affiche qu'une seule valeur de RETX
, de sorte que votre problème n'est pas illustré---votre code fonctionne très bien sur ces 8 lignes sans NA
s retourné. (Et il s'en retourne d'un bloc de données, pas une matrice.) tidyr
n'est pas intégré, mais vous pouvez voir reshape2::dcast
pour une version plus souple de spread
.Toutefois, si vous avez de la
NA
s, je suppose que vous avez différents permno
des valeurs ou à des dates différentes pour vos actions--probablement permno. Donc, si cette colonne n'est pas applicable à votre propagation de données, il suffit de le déposer avant de se répandre.Merci pour les conseils. C'était mon premier temps à poster la question sur ce site, je travaille toujours sur elle.
Pas de problème! Il suffit d'éditer votre question avec un peu de données qui montre le problème. Vous pouvez voir plus de la reproductibilité des conseils ici. Mais ne modifier des données dans votre question, sinon nous ne pouvons pas voir le problème ou tester une solution. Essayez de trouver 8 ou 10 lignes, avec deux TICKER valeurs, 4 ou 5 dates de chaque, montrer le problème. Et peut-être expliquer ce que PERMNO est.
Il est votre problème alors. Si vous avez besoin de plus d'aide, modifiez le code dans votre question, au lieu de mettre beaucoup de code dans les commentaires. Si cela résout votre problème, vous pourriez juste voulez supprimer la question.
OriginalL'auteur HLD25 | 2015-02-12
Vous devez vous connecter pour publier un commentaire.
Si vous avez des données dupliquées dans les lieux, vous aurez d'abord besoin de se débarrasser de ces valeurs parce que sinon, si vous utilisez
tidyr::spread
, il remplacera la valeur de la longueur. De toute façon, en supposant que vous avez supprimé les doublons à l'aide unique ou quelque chose de similaire, voici comment je le ferais avec tidyr, puisque c'est ce que vous avez demandé et depuis tidyr est assez chouette et concis:Si vous incluez
PERMNO
, vous obtiendrez NAs pour chaque ligne où cette valeur particulière deTICKER
n'ont pas de valeur correspondante dansPERMNO
.OriginalL'auteur LauraS