我有以下数据:

df <- data.frame(index = 1:85,
                 times = c(seq(as.POSIXct("2020-10-03 21:31:00 UTC"),
                               as.POSIXct("2020-10-03 22:25:00 UTC")
                               "min"),
                           seq(as.POSIXct("2020-11-03 10:10:00 UTC"),
                               as.POSIXct("2020-11-03 10:39:00 UTC"),
                               "min")
                           ))

如果我们看第55行和第56行,时间上有一个明显的鸿沟:

> df[55:56, ]
   index               times
55    55 2020-10-03 22:25:00
56    56 2020-11-03 10:10:00

我想根据拆分添加第三个分类列split

e、 g.第df$split[55, ] = A行和第df$split[56, ] = B

逻辑式

If time gap between rows is greater than 5 mins start new category for subsequent rows until the next instance where time gap > 5 mins.

谢谢

推荐答案

你可以用

library(dplyr)

df %>% 
  mutate(cat = 1 + cumsum(c(0, diff(times)) > 5))

它回来了

   index               times cat
1      1 2020-10-03 21:31:00   1
2      2 2020-10-03 21:32:00   1
3      3 2020-10-03 21:33:00   1
4      4 2020-10-03 21:34:00   1
5      5 2020-10-03 21:35:00   1
6      6 2020-10-03 21:36:00   1
7      7 2020-10-03 21:37:00   1
8      8 2020-10-03 21:38:00   1
...
53    53 2020-10-03 22:23:00   1
54    54 2020-10-03 22:24:00   1
55    55 2020-10-03 22:25:00   1
56    56 2020-11-03 10:10:00   2
57    57 2020-11-03 10:11:00   2
58    58 2020-11-03 10:12:00   2
59    59 2020-11-03 10:13:00   2

如果你需要字母或其他东西,你可以使用

df %>% 
  mutate(cat = LETTERS[1 + cumsum(c(0, diff(times)) > 5)])

将类别12转换为AB.

R相关问答推荐

仅在ggplot的每个方面绘制最丰富的物种

给定R中另一行中的值,如何插补缺失值

更改网格的crs以匹配简单要素点对象的crs

使用scale_x_continuous复制ggplot 2中的离散x轴

使用rlang s arg_match判断函数输入列表

在特定列上滞后n行,同时扩展框架的长度

行式dppr中的变量列名

随机森林回归:下拉列重要性

矩阵%*%矩阵中的错误:需要数字/复杂矩阵/向量参数

如何从R中的字符串元素中减go 一个数字?

将非重复序列高效转换为长格式

如何使下一个按钮只出现在Rshiny 的一段时间后?""

在R中使用Scale_y_Break后更改y轴标签

plotly hover文本/工具提示在shiny 中不起作用

将一个字符串向量调整为与其他字符串向量完全相同的大小

给定开始日期和月份(数字),如何根据R中的开始日期和月数创建日期列

在R函数中使用加号

R中Gamma回归模型均方误差的两种计算方法不一致

如何阻止围堵地理密度图?

Data.table::Shift type=允许扩展数据(&Q;LAG&Q;)