Простой способ поместить данные в бункеры
У меня есть фрейм данных, как показано ниже, с более чем 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
с другой стороны, возвращает коэффициент, который имеет все допустимые ячейки, определенные как уровни.