2017-01-05 1 views
1

Ich möchte zwei Tabellen pünktlich verbinden. Die Eingabedatei hat eine Spalte für hh: mm: ss und eine Spalte für am/pm. Ich habe erfolgreich eine neue Spalte mit Datumsinformationen erstellt, aber ich kann nicht mitmachen. Die Fehlermeldung ergibt für mich keinen Sinn und weist nicht auf etwas hin, das ich ihr gegeben habe.

Dies:

t1 <- read.table("~/SEQ-1066/sar.r.54043.txt",header=TRUE) 
t2 <- read.table("~/SEQ-1066/sar.q.54043.txt",header=TRUE) 
t1$pt <- strptime(paste(t1$time, t1$AM),"%I:%M:%S %p") 
t2$pt <- strptime(paste(t2$time, t2$AM),"%I:%M:%S %p") 
t <- merge(x=t1,y=t2,by="pt") 

Ergebnisse in:

> t1 <- read.table("~/SEQ-1066/sar.r.54043.txt",header=TRUE) 
> t2 <- read.table("~/SEQ-1066/sar.q.54043.txt",header=TRUE) 
> t1$pt <- strptime(paste(t1$time, t1$AM),"%I:%M:%S %p") 
> t2$pt <- strptime(paste(t2$time, t2$AM),"%I:%M:%S %p") 
> t <- merge(x=t1,y=t2,by="pt") 
Error in sort.list(bx[m$xi]) : 'x' must be atomic for 'sort.list' 
Have you called 'sort' on a list? 

Danke R für einen solchen einfachen Fehlermeldungen zu verstehen.

Antwort

3

Offenbar ist der Datentyp strptime nicht sortierbar oder als Join-Index verwendbar, so dass das Gießen mit as.POSIXct funktioniert.

t1 <- read.table("~/SEQ-1066/sar.r.54043.txt",header=TRUE) 
t2 <- read.table("~/SEQ-1066/sar.q.54043.txt",header=TRUE) 
t1$pt <- as.POSIXct(strptime(paste(t1$time, t1$AM),"%I:%M:%S %p"), tz = "GMT") 
t2$pt <- as.POSIXct(strptime(paste(t2$time, t2$AM),"%I:%M:%S %p"), tz = "GMT") 
t <- merge(x=t1,y=t2,by="pt") 

Tatsächliche Lösung wurde here, danke Henrique Dallazuanna gefunden.

+1

Um zu sehen, warum man sich die Ergebnisse von 'strptime' ansieht, handelt es sich um einen POSIXlt Vektor:' d = strptime ("27.02.92 23:03:20", "% m /% d /% y% H:% M:% S "); str (d); Attribute (d) ', so hat es viele Attribute, und diese Klasse ist bekannt, nicht gut mit Datenrahmen zu spielen – user20650

Verwandte Themen