Простой способ поместить данные в бункеры

У меня есть фрейм данных, как показано ниже, с более чем 1000 строк. Я хотел бы поместить данные в бункеры с интервалом в 1 м (0-1 м, 1-2 м и т. Д.). Есть ли простой способ сделать это, не находя минимальную глубину и не используя команду subset несколько раз, чтобы поместить данные в соответствующие ячейки?

Temp..ºC. Depth..m. Light  time       date
1     17.31     -14.8   255 09:08 2012-06-19
2     16.83     -21.5   255 09:13 2012-06-19
3     17.15     -20.2   255 09:17 2012-06-19
4     17.31     -18.8   255 09:22 2012-06-19
5     17.78     -13.4   255 09:27 2012-06-19
6     17.78      -5.4   255 09:32 2012-06-19

1 ответ

Решение

Предполагая, что имя вашего фрейма данных df, сделайте следующее:

split(df, findInterval(df$Depth..m., floor(min(df$Depth..m.)):0))

Затем вы получите список, где каждый элемент представляет собой фрейм данных, содержащий строки, которые имеют Depth..m. в пределах определенного интервала 1 м.

Однако обратите внимание, что пустые контейнеры будут удалены. Если вы хотите сохранить их, вы можете использовать cut вместо findInterval, Причина в том, что findInterval возвращает целочисленный вектор, делая невозможным split знать, что такое набор допустимых корзин. Он знает только те значения, которые он видел, а остальные отбрасывает. cut с другой стороны, возвращает коэффициент, который имеет все допустимые ячейки, определенные как уровни.

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