私は1台の自転車の軌道のサンプルデータセットを持っています。次のレコードのインデックス
test[order(test$starttime, decreasing = FALSE),]
と見つける:私の目標は、平均で、駅への訪問の間で経過B.
はこれまでのところ、私は単純にデータセットを注文することができた時間の量を把握することです私はトラブルに実行する場所どこstart_station
とend_station
等しいB.
which(test$start_station == 'B')
which(test$end_station == 'B')
の行インデックスは次の部分です。自転車は駅Bであるときの間で経過は、我々はレコードがであることを起こるend_station= "B"
、でも場合、レコードを発生隣どこstart_station = "B"
(自転車の葉)と間difftime()
を取る必要があり、時間を計算するために、同じ行(行6を参照)。以下のデータセットを使用し
、我々は自転車は、ステーションBの外側7:30:00
と16:00:00
間局Bの18:00:00
と18:30:00
外部との間の30分510分を費やし、ステーションBの19:00:00
と22:30:00
外部との間の210分間、そのことを知っています平均を250 minutes.
difftime()
を使用してRでこの出力を再現するにはどうすればよいですか?ここで
> test
bikeid start_station starttime end_station endtime
1 1 A 2017-09-25 01:00:00 B 2017-09-25 01:30:00
2 1 B 2017-09-25 07:30:00 C 2017-09-25 08:00:00
3 1 C 2017-09-25 10:00:00 A 2017-09-25 10:30:00
4 1 A 2017-09-25 13:00:00 C 2017-09-25 13:30:00
5 1 C 2017-09-25 15:30:00 B 2017-09-25 16:00:00
6 1 B 2017-09-25 18:00:00 B 2017-09-25 18:30:00
7 1 B 2017-09-25 19:00:00 A 2017-09-25 19:30:00
8 1 А 2017-09-25 20:00:00 C 2017-09-25 20:30:00
9 1 C 2017-09-25 22:00:00 B 2017-09-25 22:30:00
10 1 B 2017-09-25 23:00:00 C 2017-09-25 23:30:00
サンプルデータです:
> dput(test)
structure(list(bikeid = c(1, 1, 1, 1, 1, 1, 1, 1, 1, 1), start_station = c("A",
"B", "C", "A", "C", "B", "B", "А", "C", "B"), starttime = structure(c(1506315600,
1506339000, 1506348000, 1506358800, 1506367800, 1506376800, 1506380400,
1506384000, 1506391200, 1506394800), class = c("POSIXct", "POSIXt"
), tzone = ""), end_station = c("B", "C", "A", "C", "B", "B",
"A", "C", "B", "C"), endtime = structure(c(1506317400, 1506340800,
1506349800, 1506360600, 1506369600, 1506378600, 1506382200, 1506385800,
1506393000, 1506396600), class = c("POSIXct", "POSIXt"), tzone = "")), .Names = c("bikeid",
"start_station", "starttime", "end_station", "endtime"), row.names = c(NA,
-10L), class = "data.frame")
最初のステップは、 'library(data.table);のような長い形式に変換します。 variable.name = "イベント"、value.name = c( "ステーション"、 "時刻")、mtest = melt(setDT(test)、id = "bikeid"、meas = )); (イベント)、イベント:= i.V2]; mtest [。(factor(1:2)、c( "start"、 "end"))、on =。 setkey(mtest、bikeid、time) '、しかし、私はそれ以降の最善の方法はわかりません。 – Frank