You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在R的data.table中对同一列数据与后续两位值做比较

在data.table中比较列值与后续两位的值

嘿,这事儿用data.table的shift()函数就能轻松搞定!它专门用来处理这种偏移取值的需求,完美匹配你想要的“每个值和后面两位的值比较”的场景。

完整解决方案代码

library(data.table)
dt <- data.table(a = c(2, 3, 2, 4))

# 添加结果列b:比较当前a值与后面第2位的a值
dt[, b := a == shift(a, n = 2, type = "lead")]

# 查看结果
dt

代码解释

  • shift(a, n = 2, type = "lead"):这部分是核心——type="lead"表示取当前位置之后的元素,n=2指定偏移2个位置。所以第1行对应的是第3行的a值,第2行对应第4行的a值,第3、4行因为后面没有足够的元素,会返回NA。
  • a == shift(...):直接将当前a列的值和偏移后的列做相等比较,得到布尔值或NA,正好符合你的预期结果。

运行后你会得到和示例完全一致的输出:

a     b
1: 2  TRUE
2: 3 FALSE
3: 2    NA
4: 4    NA

内容的提问来源于stack exchange,提问作者Ushuaia81

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 04:27:37