0

R で時系列データを扱うのに問題があります。

a <- c(1:6)
b <- c("05/12/2012 05:00","05/12/2012 06:00","06/12/2012 05:00",
       "06/12/2012 06:00", "07/12/2012 09:00","07/12/2012 07:00")
c <-c("0","0","0","1","1","1")
df1 <- data.frame(a,b,c,stringsAsFactors = FALSE)
df1$b <- strptime(df1$b, "%d/%m/%Y %H:%M")

R Studio (バージョン 0.97.314) を使用しています。コードの最後の行を実行して b を日付変数に変換し、ワークスペース ウィンドウでこのデータフレームを表示しようとすると、R Studio が中止されます。

これをここで報告したところ、R の破損したバージョンであるとアドバイスされました。ただし、別の Windows PC で同じコードを実行したところ、同じ問題が発生しました。また、R Studio のサポートにメールを送信したところ、使用していた R コードが原因でセッションが中止されたとのことでした。R と R studio の両方を再インストール (および R Studio の最新バージョンに更新) しましたが、同じ問題が発生しました。誰でも他の解決策についてアドバイスできますか?

実際のデータを操作しようとすると、少し異なる問題が発生します。コードを実行して日付を正しくフォーマットすると、日付列が多数のゼロに変換されます。残りの 8 行は単なる数字のリストです。dput() を使用してデータフレームの最初の 4 行を出力すると、次のようになります。

structure(list(Date = structure(list(sec = c(0, 0, 0, 0), min = c(40L, 
42L, 44L, 46L), hour = c(18L, 18L, 18L, 18L), mday = c(14L, 14L, 
14L, 14L), mon = c(11L, 11L, 11L, 11L), year = c(112L, 112L, 
112L, 112L), wday = c(5L, 5L, 5L, 5L), yday = c(348L, 348L, 348L, 
348L), isdst = c(0L, 0L, 0L, 0L)), .Names = c("sec", "min", "hour", 
"mday", "mon", "year", "wday", "yday", "isdst"), class = c("POSIXlt", 
"POSIXt")), LATITUDE = c(54.77769505, 54.77700313, 54.77770803, 
54.77830731), LONGITUDE = c(-1.56627049, -1.57128976, -1.57544758, 
-1.58108564), HEIGHT = c(" 173.911 M", " 94.833 M", " 137.995 M", 
" 101.871 M"), SPEED = c(" 0.465 km/h", " 10.164 km/h", " 9.129 km/h", 
" 6.340 km/h")), .Names = c("Date", "LATITUDE", "LONGITUDE", 
"HEIGHT", "SPEED"), row.names = c(1L, 13L, 25L, 37L), class = "data.frame")

日付が正しくフォーマットされていることを確認したい唯一の理由は、次のコードを使用して、特定の時点以降の観察を取り除きたいからです。

gps <- subset(gps, Date > strptime("14/12/2012 19:00", "%d/%m/%Y %H:%M"))

以前に、次を使用して現地時間と日付の列をフォーマットしました。

gps <- transform(gps, Date=format(as.POSIXct(paste(LOCAL.DATE, LOCAL.TIME)), "%d/%m/%Y %H:%M"))

ただし、次のエラー メッセージが表示されます。

Date > strptime("14/12/2012 19:00", "%d/%m/%Y %H:%M") のエラー: これらのタイプの比較は実装されていません。さらに: 警告メッセージ: 1: In eval(expr, environment, enclos) : 互換性のないメソッド ("Ops.factor", "Ops.POSIXt") for ">" 2: In Date > strptime("14/12/2012 19:00", "%d/ %m/%Y %H:%M") : 長いオブジェクトの長さが短いオブジェクトの長さの倍数ではありません

どうもありがとう。

4

0 に答える 0