如何在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
相关产品推荐
相关产品推荐

