Konvertieren Woche, Zahl, Datum
Habe ich einen Daten-frame in R mit der Woche des Jahres, die würde ich gerne umwandeln in ein Datum. Ich weiß, ich habe zu Holen ein Jahr und einen Tag in der Woche, so bin ich die Festsetzung dieser Werte auf 2014 und 1. Die Umwandlung dieser in ein Datum scheint einfach:
as.Date(paste(2014,df$Week,1,sep=""),"%Y%U%u")
Aber dieser code funktioniert nur, wenn in der Woche ist größer als 9. Woche 1 - 9 gibt NA. Wenn ich die Woche zu 01,02,03,..., das es noch gibt NA.
Jemand sehen, was ich bin fehlt?
Mögliche Duplikate von "Transformieren" Jahr/Woche date-Objekt, das in R
Hüten Sie sich vor den verschiedenen Konventionen auf, wie man zählt in der Woche-of-the-Jahr. Bitte, sehen Sie unter Antwort für eine Diskussion.
Hüten Sie sich vor den verschiedenen Konventionen auf, wie man zählt in der Woche-of-the-Jahr. Bitte, sehen Sie unter Antwort für eine Diskussion.
InformationsquelleAutor Aaron Soderstrom | 2015-09-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
as.Date
ruft die 1 bis 9, wie NA, wie es wird erwartet, dass zwei Ziffern für die Nummer der Woche und kann nicht ordnungsgemäß analysiert werden.Um es zu beheben, fügen Sie in einige - split Dinge:
0
in 01 in numerische Daten - siehe die Ausgabe vonpaste(2014,01,1,sep="")
- "201411". Sie konnte tunpaste(2014,"01",1,sep="")
um es Charakter, aber wenn Ihre Daten numerisch ist, die nicht leicht zu arbeiten.Hüten Sie sich vor den verschiedenen Konventionen auf, wie man zählt in der Woche-of-the-Jahr. Bitte, sehen Sie unter Antwort für eine Diskussion.
InformationsquelleAutor jeremycg
Alternative Lösung ist die Verwendung von Datums-Arithmetik aus der
lubridate
Paket:Den
-1
ist notwendig, weil2014-01-01
ist schon 1 Woche. In anderen Worten, wir wollen:df$Week == 1
zuordnen2014-01-01
(das istymd("2014-01-01") + weeks(1-1)
)df$Week == 2
zuordnen2014-01-08
(das istymd("2014-01-01") + weeks(2-1)
)Hüten Sie sich vor den verschiedenen Konventionen auf, wie man zählt in der Woche-of-the-Jahr. Bitte, sehen Sie unter Antwort für eine Diskussion.
InformationsquelleAutor Artem Sokolov
InformationsquelleAutor user2640679