r - 选择减法绝对值小于指定值的行
问题描述
假设我有这个数据框:
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))
我想选择行减法的绝对值大于或等于 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, 1L, 1L, 5L, 20L, 20L, 20L, 20L)),
class = "data.frame", row.names = c(NA,
-9L))
推荐阅读
- node.js - WebRTC 更改默认 (500kbps) 带宽 NodeJS - Kurento 媒体服务器 (KMS)
- c# - C# 和 TPM 函数
- flutter - Flutter:当没有链接时,如何不显示不占用空间的小部件?
- c++ - 从父类对象指针向量访问派生类属性
- c - 为什么我会收到此错误 Makefile: No rule to make target 'timer.c', required by 'timer.o'. 停止
- c# - 使用 Entity Framework Core 来自数据库的 2x 多对多队列
- performance - Kafka JDBC 源连接器性能问题 - 永久充分使用 CPU
- java - 如何在 Java 中绘制一个更改每个循环内容的字符串数组?
- node.js - npm start 挂起,不同步更改(WSL 上的 create-react-app)
- java - 为什么使用数组比使用地图记忆更快?