r - 使用 data.table 按与另一行的距离选择行

标签 r data.table

假设我有以下数据表。

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/

相关文章:

r - R 中多列的卡方检验

R:我应该使用与函数参数相同的名称命名变量吗?

javascript - 使用 OpenCPU 下载用于生成绘图的数据

R data.table 到行列表;更好的方法?

r - 在 R 中填充一个空的数据框

r - 在 R 中生成带有变量名的列表

r - 为什么 as.Date 在字符向量上速度很慢?

r - 通过求和来聚合重复的行

R 函数根据另一组值评估 data.table 列中的值

r - Melt.data.table 中格式错误的因子错误