2

我有一个如下所示的数据框,其中包含超过 1000 行。我想以 1m 的间隔(0-1m、1-2m 等)将数据子集到 bin 中。有没有一种简单的方法可以做到这一点,而无需找到最小深度并多次使用子集命令将数据放入适当的箱中?

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
4

1 回答 1

4

假设您的数据框的名称是df,请执行以下操作:

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

然后,您将获得一个列表,其中每个元素都是一个数据框,其中包含Depth..m.特定 1 m 间隔内的行。

但是请注意,空垃圾箱将被删除。如果你想保留它们,你可以使用cut而不是findInterval. 原因是它findInterval返回一个整数向量,因此无法split知道有效 bin 的集合是什么。它只知道它看到的值并丢弃其余的值。cut另一方面,返回一个因子,该因子将所有有效的 bin 定义为级别。

于 2013-03-05T13:25:30.947 回答