Ich versuche, zwei Spalten in meinem Dataframe in das 'gute' Datum & Zeitklasse zu transformieren, und bis jetzt hatte nicht viel Erfolg damit. Ich habe verschiedene Klassen ausprobiert (timeDate, Date, timeSeries, POSIXct, POSIXlt), aber ohne Erfolg. Vielleicht übersehe ich nur das Offensichtliche und weil ich so viele Ansätze ausprobiert habe, weiß ich einfach nicht mehr, was es ist. Ich hoffe, dass einige von Ihnen etwas Licht in die Sache bringen können, wo ich falsch liege.So finden Sie das höchste (neueste) und das niedrigste (früheste) Datum [R]
Ziel: Ich möchte den Unterschied zwischen zwei Daten mit dem frühesten und spätesten Datum berechnen. Ich arbeite mit head() und tail(), aber da diese Werte nicht das früheste und späteste Datum in meinen Daten sind, brauche ich einen anderen Weg. (Ich sorge dafür, dass die Daten nicht sortiert werden, weil die Daten nur am Tag des Datums sortiert werden.)
Zweites Ziel: Ich möchte die Daten vom täglichen Format (dh 8-12 -2010) auf wöchentliche, monatliche und jährliche Ebenen (dh '49 -2010 ',' Dezember-10 'und nur' 2010 '). Dies kann mit den Formateinstellungen (wie "% d-% m-% y") geschehen. Kann dies getan werden, indem der data.frame in eine Zeitklasse konvertiert wird und die Zeitklasse in das richtige Format umgewandelt wird (8-12-2010 -> format ("% B-% y") -> 'Dezember-10') und dann diese Zeitklasse in einen Faktor mit Ebenen für jeden Monat umwandeln?
Für beide Ziele muss ich den Datumsrahmen irgendwie in eine Zeitklasse konvertieren, und hier stieß ich auf einige Schwierigkeiten.
sieht Ihr Datenrahmen wie folgt aus:
> tradesList[c(1,10,11,20),14:15] -> tmpTimes4
> tmpTimes4
EntryTime ExitTime
1 01-03-07 10-04-07
10 29-10-07 02-11-07
11 13-04-07 14-05-07
20 18-12-07 20-02-08
Hier ist eine Zusammenfassung dessen, was ich versucht habe:
> class(tmpTimes4)
[1] "data.frame"
> as.Date(head(tmpTimes4$EntryTimes, n=1), format="%d-%m-%y")
Error in as.Date.default(head(tmpTimes4$EntryTimes, n = 1), format = "%d-%m-%y") :
do not know how to convert 'head(tmpTimes4$EntryTimes, n = 1)' to class "Date"
> as.timeDate(tmpTimes4, format="%d-%m-%y")
Error in as.timeDate(tmpTimes4, format = "%d-%m-%y") :
unused argument(s) (format = "%d-%m-%y")
> timeSeries(tmpTimes4, format="%d-%m-%y")
Error in midnightStandard2(charvec, format) :
'charvec' has non-NA entries of different number of characters
> tmpEntryTimes4 <- timeSeries(tmpTimes4$EntryTime, format="%d-%m-%y")
> tmpExitTimes4 <- timeSeries(tmpTimes4$ExitTime, format="%d-%m-%y")
> tmpTimes5 <- cbind(tmpEntryTimes4,tmpExitTimes4)
> colnames(tmpTimes5) <- c("Entry","Exit")
> tmpTimes5
Entry Exit
[1,] 01-03-07 10-04-07
[2,] 29-10-07 02-11-07
[3,] 13-04-07 14-05-07
[4,] 18-12-07 20-02-08
> class(tmpTimes5)
[1] "timeSeries"
attr(,"package")
[1] "timeSeries"
> as.timeDate(tmpTimes5, format="%d-%m-%y")
Error in as.timeDate(tmpTimes5, format = "%d-%m-%y") :
unused argument(s) (format = "%d-%m-%y")
> as.Date(tmpTimes5, format="%d-%m-%y")
Error in as.Date.default(tmpTimes5, format = "%d-%m-%y") :
do not know how to convert 'tmpTimes5' to class "Date"
> format.POSIXlt(tmpTimes5, format="%d-%m-%y", usetz=FALSE)
Error in format.POSIXlt(tmpTimes5, format = "%d-%m-%y", usetz = FALSE) :
wrong class
> as.POSIXlt(tmpTimes5, format="%d-%m-%y", usetz=FALSE)
Error in as.POSIXlt.default(tmpTimes5, format = "%d-%m-%y", usetz = FALSE) :
do not know how to convert 'tmpTimes5' to class "POSIXlt"
> as.POSIXct(tmpTimes5, format="%d-%m-%y", usetz=FALSE)
Error in as.POSIXlt.default(x, tz, ...) :
do not know how to convert 'x' to class "POSIXlt"
Die Timedate Pakete eine Funktion für ‚Reichweite‘ hat, jedoch die Umwandlung Die Date-Klasse funktioniert für eine einzelne Instanz, aber aus irgendeinem Grund nicht für einen Datenrahmen:
An diesem Punkt glaube ich fast, dass es unmöglich ist zu tun, also würden alle Gedanken sehr geschätzt werden!
Grüße,
Sie verwenden könnten 'dput (tmpTimes4)' genaue Datenmenge die Verwendung in Ihrem Code zu liefern. – Marek
@Marek: Danke für die Antwort! Ich wusste nichts von dput, also danke für den Tipp. :) – Jura25