R数据表中的差异过滤器
我想过滤diff()函数的结果,并使用data.table的效率R数据表中的差异过滤器,r,filter,data.table,R,Filter,Data.table,我想过滤diff()函数的结果,并使用data.table的效率 DT[diff(timestamp) > 10] 不会执行此工作,因为结果集比源短。即使创建一个过滤器,而不是子集,也至少会创建一个警告(我想阻止它) 我可以使用dplyr或其他,但我希望data.table的效率。有什么建议吗?正如罗兰指出的那样,这个错误源于diff()的性质。当应用于长度n的向量时,它返回长度n-1的向量 例如: diff(c(2, 4, 9)) [1] 2 5 使用逻辑向量子集data.table
DT[diff(timestamp) > 10]
不会执行此工作,因为结果集比源短。即使创建一个过滤器,而不是子集,也至少会创建一个警告(我想阻止它)
我可以使用dplyr或其他,但我希望data.table的效率。有什么建议吗?正如罗兰指出的那样,这个错误源于
diff()的性质。当应用于长度n
的向量时,它返回长度n-1
的向量
例如:
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]
嗯,根据您想要实现的目标,您必须附加或前置一个TRUE
或FALSE
值。这不是特定于数据表的,而是基于一个简单的事实,即两个值之间总是存在差异。@Roland,是的,这一点很清楚。我的问题是什么是编程上最干净的解决方法。谢谢
DT[timestamp - shift(timestamp) > 10]