2009-11-22 4 views
0

Fondamentalement, je veux savoir pourquoi as.Date(200322,format="%Y%W") me donne NA. Pendant que nous y sommes, j'apprécierais tout conseil sur une structure de données pour la section transversale répétée (aka pseudo-panneau) dans R. J'ai obtenu aggregate() pour (sorte de) travail, mais ce n'est pas assez flexible - il manque des données sur les colonnes lorsque j'omets les valeurs manquées, par exemple. Plus précisément, j'ai une enquête qui est répétée chaque semaine pendant quelques années avec un tas de questions similaires réponses que je voudrais combiner, moyenne, condition et l'intrigue dans les deux dimensions. Obtenir la conversion de la date correcte devrait probablement m'aider vers mon objectif avec le paquet zoo ou quelque chose de similaire.problèmes de conversion de format de date spécifiques dans R

Toute contribution est appréciée. Mise à jour: merci pour suggestion de chaîne, mais comme vous pouvez le voir dans votre propre exemple, %W partie ne fonctionne pas - il identifie seulement l'année tout en fixant le jour actuel pendant que j'ai besoin de définir une semaine spécifique (et laisser le jour blanc).

+0

Salut Alex, Pouvez-vous clarifier ce que vous essayez de faire ici. Quelle heure essaies-tu de représenter? Si vous voulez mettre 2/2/2003, vous pouvez essayer quelque chose comme: as.Date ("20030202", format = "% Y% m% d") Aussi, assurez-vous de mettre votre date en tant que chaîne, sinon elle voudra interpréter la date comme le nombre de secondes d'une origine. – eytan

+0

La deuxième partie de votre question devrait probablement être divisée en une nouvelle question et donner beaucoup plus de détails. À quoi ressemblent vos données? Qu'est-ce que vous essayez de faire exactement? – Shane

Répondre

5

Utilisez une chaîne comme premier argument dans as.Date() et sélectionnez un jour de semaine spécifique (format %w, valeur 0-6). Il y a sept dates possibles dans chaque semaine, donc strptime a besoin de plus d'informations pour choisir une date unique. Sinon, le jour et le mois en cours sont renvoyés.

> as.Date(paste("200947", "0", sep="-"), format="%Y%W-%w") 
[1] "2009-11-22" 
+0

Mais pourquoi 'format (as.Date (" 2003-06-02 "),"% Y-% W ")' donne '' 2003-22 "', et 'as.Date (" 2003-22 "," % Y-% W ")' donne '" 2003-11-23 "' (mois et jour sont à partir de la date actuelle) – Marek

+0

Vous devez spécifier le numéro d'un jour de la semaine ('as.Date (" 2003-22-1 " , "% Y-% W-% w") '), sinon il n'y a pas de résultat unique et le jour et le mois en cours sont retournés. – rcs