选择相减绝对值小于指定值的行

Choose rows in which the absolute value of subtraction is less a specified value

假设我有这个数据框:

ID   X1           X2
1    1            2
2    2            1
3    3            1
4    4            1
5    5            5
6    6            20
7    7            20
8    9            20
9    10           20


dataset <- structure(list(ID = 1:9, X1 = c(1L, 2L, 3L, 4L, 5L, 6L, 7L, 9L, 
                                           10L), X2 = c(2L, 1L, 1L, 1L, 5L, 20L, 20L, 20L, 20L)),
                     class = "data.frame", row.names = c(NA, 
                                                         -9L))

而我想要select行相减的绝对值大于或等于2的行(基于X1和X2列)。

例如,第 4 行的值为 4-1,即 3,应 selected。

第9行值为10-20,也就是-10。绝对值为 10,应 selected。

在这种情况下,它将是第 3、4、6、7、8 和 9 行

我试过了:

dataset2 = dataset[,abs(dataset- c(dataset[,2])) > 2] 

但是我得到一个错误。

操作:

abs(dataset- c(dataset[,2])) > 2

确实给我总和大于 2 的行,但结果仅适用于我的第二列并且 select 不正确

我们可以得到 'X1'、'X2' 列之间的差异,在 subset 中创建一个逻辑表达式来对行

进行子集化
subset(dataset, abs(X1 - X2) >= 2)
#  ID X1 X2
#3  3  3  1
#4  4  4  1
#6  6  6 20
#7  7  7 20
#8  8  9 20
#9  9 10 20

或使用索引

subset(dataset, abs(dataset[[2]] - dataset[[3]]) >= 2)

数据

dataset <- structure(list(ID = 1:9, X1 = c(1L, 2L, 3L, 4L, 5L, 6L, 7L, 9L, 
10L), X2 = c(2L, 1L, 1L, 1L, 5L, 20L, 20L, 20L, 20L)),
class = "data.frame", row.names = c(NA, 
-9L))