如何解决选择其中相减的绝对值小于指定值的行 数据
假设我有这个数据框:
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,20L,20L)),class = "data.frame",row.names = c(NA,-9L))
并且我想选择其中行相减的绝对值大于或等于2(基于列X1和X2)的行。
例如,第4行的值是4-1,即3,应选择该值。
第9行的值为10-20,即-10。绝对值为10,应选择。
在这种情况下,它将是第3、4、6、7、8和9行
我尝试过:
dataset2 = dataset[,abs(dataset- c(dataset[,2])) > 2]
操作:
abs(dataset- c(dataset[,2])) > 2
是否向我提供总和大于2的行,但结果仅适用于我的第二列,并且选择不正确
解决方法
我们可以得到'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,20L,20L)),class = "data.frame",row.names = c(NA,-9L))
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。