2017-01-05 5 views
1

時間通りに2つのテーブルを結合します。入力ファイルには、hh:mm:ssの列とam/pmの列があります。私は日付情報を使って新しい列を作成したようですが、それに参加することはできません。エラーメッセージは私には意味をなさないし、私が与えたものを指していません。

この:

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") 

結果で:

> 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? 

を使用すると、エラーメッセージを理解するように簡単になるためにRありがとうございました。

答えて

3

strptimeのデータ型は、並べ替え可能または結合インデックスとして使用できないため、as.POSIXctを使用してキャストすることはできません。

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") 

実際のソリューションは、あなたのエンリケDallazuannaに感謝、hereを発見しました。

+1

なぜ、 'strptime'の結果を見てみましょうか:POSIXltベクトルです:' d = strptime( "02/27/92 23:03:20"、 "%m /%d /% y%H:%M:%S "); str(d);属性(d) 'には属性が多く、このクラスはデータフレームでうまく動かないことが知られています – user20650

関連する問題