假设我有以下数据表。
library(data.table)
DT <- data.table(x=1:6, y=c(0,0,1,0,0,0))
我可以编写一些命令 DT[...]
来选择 y=1
行中 2 行中的所有行吗?也就是说,利用与第三行的邻近度,我想选择第 1-5 行。
最佳答案
这是一个使用 sapply
循环位置索引 (which(y == 1)
) 的选项,通过添加/减去 2 来创建一个序列,获取唯一
元素(在重叠的情况下)并使用该i
library(data.table)
DT[unique(sapply(which(y==1), function(i) (i-2):(i + 2)))]
-输出
# x y
#1: 1 0
#2: 2 0
#3: 3 1
#4: 4 0
#5: 5 0
如果存在负索引,我们可以对它们进行子集
i1 <- DT[,unique(sapply(which(y==1), function(i) (i-2):(i + 2)))][,1]
DT[i1[i1 > 0]]
关于r - 使用 data.table 按与另一行的距离选择行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64094308/