以前に時刻と日付を1つの列(タイムスタンプと呼ばれる)に統合したデータフレームに取り組んでいます。
a <-c(1:21)
D <- c("2012/12/14", "2012/12/14", "2012/12/14", "2012/12/14", "2012/12/14", "2012/12/14", "2012/12/14", "2012/12/14", "2012/12/14", "2012/12/14", "2012/12/14", "2012/12/14", "2012/12/14", "2012/12/14", "2012/12/14", "2012/12/14", "2012/12/14", "2012/12/14", "2012/12/14", "2012/12/14", "2012/12/14")
Time <- c("18:40:37", "18:40:48", "18:40:58", "18:41:08","18:41:18","18:41:28","18:41:38","18:41:48","18:41:58","18:42:08","18:42:18","18:42:28","18:42:38","18:42:48","18:42:58","18:43:08","18:43:18","18:42:28", "18:44:18", "18:44:28", "18:44:28")
df1 <- data.frame(a, D, Time)
df1 <- within(df1, { timestamp=format(as.POSIXct(paste(D, Time)), "%d/%m/%Y %H:%M:%S") })
特定の時点以降の値を除外するためにデータフレームをサブセット化するにはどうすればよいですか?Stackoverflowで、役立つと思われる同様の質問のコードを見つけましたが、時間要素を機能させるのに苦労しています。
subset(df1, format.Date(timestamp, ""%d/%m/%Y %H:%M:%S"") >"14/12/2012 18:42:00")
アドバイスをいただければ幸いです。
編集:私は実際のデータで動作する以下の詳細なコードを取得するのに苦労しています。私のデータフレームの最初の4行のdput()は、この投稿の最後にリストされています。以前は、@Arunが推奨するコード行を使用してデータにタイムスタンプを付けていました。
gps <- within(gps, { timestamp=format(as.POSIXct(paste(LOCAL.DATE, LOCAL.TIME)),
+ "%d/%m/%Y %H:%M:%S") })
コードの2番目の部分(strptime ...)を適用しようとすると、エラーメッセージが表示されます:Error in $<-.data.frame
(*tmp*
、 "timestamp"、value = list(sec = c(37、:replacement has 30208 rows、data has 4この種の説明は、データ全体にコードを適用しようとすると、コンマで区切られた8行の多くの数値が表示されます。何らかの形で私を助けていただければ、非常にありがたいです。
structure(list(timestamp = c("14/12/2012 18:40:37", "14/12/2012 18:40:48",
"14/12/2012 18:40:58", "14/12/2012 18:41:08"), LATITUDE = c(54.77769505,
54.77765729, 54.77768751, 54.7777021), LONGITUDE = c(-1.56627049,
-1.56639255, -1.56626555, -1.56662523), HEIGHT = c(" 173.911 M",
" 161.742 M", " 146.905 M", " 138.016 M"), SPEED = c(" 0.465 km/h",
" 0.728 km/h", " 4.574 km/h", " 17.335 km/h")), .Names = c("timestamp",
"LATITUDE", "LONGITUDE", "HEIGHT", "SPEED"), row.names = c(NA,
4L), class = "data.frame")
2番目の編集:解決策を提供してくれた@Arunに感謝します。データは元々日付と時刻の列(LOCAL.DATEとLOCAL.TIME)にあるため、コードをどのように使用するのか少し混乱しました。そのため、元のソリューションのコードの最初の行を使用し、次に改訂された編集の2行目を使用しました。
これは私が使用したコードです:
gps <- within(gps, { timestamp=format(as.POSIXct(paste(LOCAL.DATE, LOCAL.TIME)),
"%d/%m/%Y %H:%M:%S") })
gps$timestamp <- strptime(gps$timestamp, "%Y-%m-%d %H:%M:%S")
しかし今、私は一連のNA(およびいくつかの-1)を取得します。コードを間違った方法で使用した場合はお詫びします...
混乱@Arunの3番目の編集謝罪。日付列を双方向で試してみると、エラーが発生します。元のデータがどのようにフォーマットされたかをyr/m / dとして保持すると、次のdput()が得られます。
structure(list(timestamp = c("2012/12/14 18:40:37", "2012/12/14 18:40:48",
"2012/12/14 18:40:58", "2012/12/14 18:41:08"), LATITUDE = c(54.77769505,
54.77765729, 54.77768751, 54.7777021), LONGITUDE = c(-1.56627049,
-1.56639255, -1.56626555, -1.56662523), HEIGHT = c(" 173.911 M",
" 161.742 M", " 146.905 M", " 138.016 M"), SPEED = c(" 0.465 km/h",
" 0.728 km/h", " 4.574 km/h", " 17.335 km/h")), .Names = c("timestamp",
"LATITUDE", "LONGITUDE", "HEIGHT", "SPEED"), row.names = c(NA,
4L), class = "data.frame")
次に使用する場合:
gps2$timestamp <- strptime(gps2$timestamp, "%Y/%m/%d %H:%M:%S")
...そしてRStudioのワークスペースウィンドウでデータフレームを表示しようとすると、Rセッションが中止されます。