r - 过滤 R data.table 中的差异
问题描述
我想过滤 diff() 函数的结果并使用 data.table 的效率。
DT[diff(timestamp) > 10]
不会做这项工作,因为结果集比源短。即使创建一个过滤器而不是子集创建至少一个警告(我想阻止)。
DT[, filter := diff(timestamp) > 10]
我可以使用 dplyr 或其他,但我想要 data.table 的效率。有什么建议么?
解决方案
diff()
正如罗兰指出的那样,错误源于本质。n-1
当应用于长度向量时,它返回长度向量n
。
例子:
diff(c(2, 4, 9))
[1] 2 5
当使用逻辑向量对 data.table 进行子集时,其行数必须等于向量的长度。因此可能的解决方案包括:
DT[-1][diff(DT$timestamp) > 10]
DT[c(FALSE, diff(timestamp) > 10)]
我可能会做这样的事情:
DT[timestamp - shift(timestamp) > 10]
推荐阅读
- php - 如果行检查,jquery sum 列
- ruby-on-rails - Rails 应用程序中的日期转换时出错“TypeError:nil 不能被强制转换为 Integer”
- python - 如何使用带有大型数据集的 python 记录链接工具包执行重复数据删除?
- provider - 如何在我的脚本中使用提供程序通过 opensea 连接 web3
- c - 如何在 C 中使用 0 和 1 的 9x9 矩阵中放置最多 10 个随机的 (1)?
- c# - 创建一个委托以更改 UserControl 大小
- python - 如何从 Pandas USFederalHolidayCalendar 中删除特定的假期?
- java - 寻找使用 arm 和 amd64(多架构)运行的 java 映像
- css - 如何使“过滤器:阴影”成为彩虹渐变?
- php - 如何格式化 url 输入 Laravel