Разделить или установить данные на 30-минутные интервалы

У меня есть фрейм данных следующей формы:

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 формат. Любые идеи очень приветствуются.

1 ответ

Решение

Вот вам одна строчка (dat быть вашим фреймом данных):

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

В самом деле cut.POSIXt принимает значения перерыва

указание интервала, один из "sec", "min", "hour", "day", "DSTday", "week", "month", "квартал" или "year", необязательно с предшествующим целым числом и пробелом или сопровождаемый "s".

Кроме того, я использовал %F %R как ярлык для %Y-%m-%d %H:%M: увидеть ?strptime чтобы увидеть все возможные форматы.

Другие вопросы по тегам