1

GPS ユニットがオンのときに 10 秒ごとに収集される緯度/経度データがあります。これらの座標には明らかにタイムスタンプが付けられています。これは私の目的 (30K プラス観測) にはデータが多すぎるため、代わりに 2 分ごとにデータを含むデータフレームを残したいと考えています。Rでこれを行うにはどうすればよいですか?

以下にデータフレームの例を作成しました。日付と時刻は 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") })   

ユニットは 1 日を通してオンとオフを切り替えることができるため、どの秒数が記録されているかについて一貫性がない場合があります。

Rでこれを行う最良の方法は何ですか?

どうもありがとう、ケイティ

4

1 に答える 1

1

最も簡単な解決策は次のようなものです。

df1[seq(to=nrow(df1), by=12),]

これは、「最初から 12 行ごとに取得する」という意味です。ユニットの電源がオフになっている場合は最適ではないかもしれませんが、それが非常に頻繁に、非常に急速に連続して発生しない限り、それほど重要ではありません。

ここでの私の最初の提案は次のとおりです。

df1[(1:floor(nrow(df1)/12))*12,]

ほぼ同じことを行いますが、行 1 ではなく行 12 から開始します。は からまで1:nの整数の範囲です。したがって、この場合、行数を 12 で割った値を超えない最大の整数までのすべての整数の範囲を作成します。次に、これらすべての数値に 12 を掛けます。このバージョンは上記よりも明確ではありませんが、それにもかかわらず、知っておくと役立つかもしれないことが頭に浮かびました。1n

于 2013-01-16T16:42:18.690 に答える