4

次の形式のデータ フレームがあります。

Temp    Depth      Light   x   time date                   time.at.depth
104     18.59      -2.7    27 21:38 2012-06-20             4
109     18.59      -2.7    27 22:02 2012-06-20             5
110     18.75      -4.0    27 22:07 2012-06-20             5
113     18.91      -2.7    27 22:21 2012-06-20             4
114     18.91      -4.0    27 22:26 2012-06-20             5
115     18.91      -2.7    27 22:31 2012-06-20             5
117     18.91      -2.7    27 22:40 2012-06-20             4
118     18.75      -4.0    27 22:45 2012-06-20             5
119     18.75      -2.7    27 22:50 2012-06-20             5
121     18.59      -4.0    27 22:59 2012-06-20             4
122     18.75      -2.7    27 23:04 2012-06-20             5
123     18.75      -4.0    27 23:09 2012-06-20             5
126     18.59      -2.7    27 23:23 2012-06-20             5
127     18.59      -2.7    27 23:28 2012-06-20             5
128     18.59      -4.0    27 23:33 2012-06-20             5
133     18.75      -4.0    27 23:57 2012-06-20             5
136     18.59      -4.0    27 00:11 2012-06-20             5
138     18.59      -2.7    27 00:21 2012-06-20             5
140     18.91      -2.7    27 00:30 2012-06-20             5

データを 30 分のビンにサブセット化したいと思います。これを行う簡単な方法はありますか?私は関数を見ましたsplit()が、それが機能するには数値形式である必要があるようPOSIXctです.形式には時間があります. どんなアイデアでも大歓迎です。

4

1 に答える 1

7

これはあなたのためのワンライナーです(datあなたのデータフレームです):

split(dat, cut(strptime(paste(dat$date, dat$time), format="%F %R"),"30 mins"))

Indeedcut.POSIXtはブレーク値として受け入れます

間隔の指定。"sec"、"min"、"hour"、"day"、"DSTday"、"week"、"month"、"quarter"、または "year" のいずれかで、オプションで整数とスペースが先行します、またはその後に「s」が続きます。

さらに、私は: see%F %Rのショートカットとして使用して、可能なすべての形式を表示しました。%Y-%m-%d %H:%M?strptime

于 2013-03-25T07:33:48.523 に答える