2016-05-09 4 views
0

Ich schreibe meine Bachelor-Thesis und ich habe noch nicht viel Erfahrung mit r. Mein Problem ist, dass meine Daten, die ich mit diesem gemacht Befehlen:Speichern von Daten in einer Matrix ("Herkunft muss geliefert werden") mit r

t<-strptime(x, "%d.%m.%Y %H.%M") 

nicht mehr funktionieren, wenn ich sie in einer Matrix mit den anderen Informationen über diese spezifischen Daten speichern.

Ich bin ein wenig verwirrt, weil es ganz gut funktioniert, wenn ich sie nicht wie diese t[1:10] in einer Matrix platziere

Aber das geschieht, sobald ich versuche, sie in einer Matrix zu speichern

matrix1<-matrix(c(t,v2,v3,v4),nrow=length(v2)) 

Fehler in as.POSIXct.numeric(X[[i]], ...) : 'origin' muss angegeben werden 

Es ist Deutsch, aber es bedeutet, dass Herkunft geliefert werden muss.

Irgendwelche Ideen, was ich tun muss, um es zu beheben? Ich bin ein bisschen frustriert :)

Antwort

0

t (schrecklicher Name übrigens, leicht mit der t Funktion verwechselt) ist ein POSIXlt-Objekt, das intern eine Liste ist. Zuerst sollten Sie überprüfen, was c(t,v2,v3,v4) zurückgibt (ich weiß nicht, wie v2 usw. definiert sind).

Dann können wir in die Dokumentation aussehen in help("matrix"):

Daten
ein optionaler Datenvektor (einschließlich einer Liste oder Expressionsvektor). Nicht-atomare klassifizierte R-Objekte werden von as.vector gezwungen und alle Attribute verworfen.

Das wichtige Bit ist "alle Attribute verworfen". Dies ist, was Sie bekommen, wenn Sie die Attribute verwerfen eines POSIXlt Objekt (das die Klasse Attribut enthalten):

x <- strptime(c("2016-05-09 12:00:00", "2016-05-09 13:00:00"), format = "%Y-%m-%d %H:%M:%S") 
attributes(x) <- NULL 
print(x) 
# [[1]] 
# [1] 0 0 
# 
# [[2]] 
# [1] 0 0 
# 
# [[3]] 
# [1] 12 13 
# 
# [[4]] 
# [1] 9 9 
# 
# [[5]] 
# [1] 4 4 
# 
# [[6]] 
# [1] 116 116 
# 
# [[7]] 
# [1] 1 1 
# 
# [[8]] 
# [1] 129 129 
# 
# [[9]] 
# [1] 1 1 
# 
# [[10]] 
# [1] "CEST" "CEST" 
# 
# [[11]] 
# [1] NA NA 

Eine Matrix kann nicht POSIXlt Objekte (oder Gegenstände, dh alles, was mit einer expliziten Klasse) enthalten .

+0

ok aber hast du eine ahnung, wie ich diese daten zusammen mit meinem vektors v1 (durchschnittliche windgeschwindigkeit), v2 "dichte) v3 (max windgeschwindigkeit) v4 (min windgeschwindigkeit) –

+0

weil mein hauptproblem ist, dass ich eine daten habe Stellen Sie mit einigen Lücken dazwischen und ich versuche, einen soliden Weg zu finden, um einen richtigen Satz von Daten zu erhalten. –

+0

Sie möchten wahrscheinlich ein data.frame anstelle einer Matrix. – Roland

0

Roland hat Recht. Sie können Posixlt-Objekte nicht in einer Matrix haben. Was können Sie tun, ist jene Daten als numerischer Zeitstempel in der Matrix speichern und wandeln sie in Daten zurück, während Umwandlung in numerischem Zeitstempel Zugriff:

>date<- as.numeric(as.POSIXct("2014-02-16 2:13:46 UTC",origin="01-01-1970")) 
>date 
[1] 1392545626 

Dann diesen Zeitstempel in einer Matrix speichern, wie Sie tun, und es zurück zu konvertieren Bis heute verwenden Sie den obigen Befehl erneut, ohne ihn in einen numerischen Wert umzuwandeln.