【发布时间】:2021-09-19 22:46:43
【问题描述】:
如何通过列之间的“对”重复值来过滤 R data.table?
我有以下 R data.table,行之间有“重复”,因此这些值相互镜像:
library(data.table)
dt = data.table(A=c(1, 5, 9, 3, 7, 11), B=c(2, 6, 10, 4, 8, 12),
C=c(3, 7, 11, 1, 5, 9), D=c(4, 8, 12, 2, 6, 10),
E=c(47, 21, 45, 27, 40, 33), F=c(27, 40, 33, 47, 21, 45))
print(dt)
# A B C D E F
# 1: 1 2 3 4 47 27
# 2: 5 6 7 8 21 40
# 3: 9 10 11 12 45 33
# 4: 3 4 1 2 27 47
# 5: 7 8 5 6 40 21
# 6: 11 12 9 10 33 45
“镜像副本”是指:如果您查看第 3、4、5 行,这些是第 0、1、2 行的“镜像副本”。第 0、1、2 行中的 A 列和 B 列是第 3、4、5 行中的 C 和 D 列。
例如,在第 0 行,['A', 'B', 'C', 'D'] 是 [1, 2, 3, 4]。在第 3 行,['A', 'B', 'C', 'D'] 是 [3, 4, 1, 2]。
E 和 F 列也是如此——第 0、1、2 行中的 E 值是第 3、4、5 行中的 F 值。
我想删除这些“镜像复制”行,只保留“唯一”对。上面的正确输出应该是:
## A B C D E F
## 1 1 2 3 4 47 27
## 2 5 6 7 8 21 40
## 3 9 10 11 12 45 33
或
## A B C D E F
## 1 3 4 1 2 27 47
## 2 7 8 5 6 40 21
## 11 12 9 10 33 45
但不是两者——只有一个行的副本。
【问题讨论】:
标签: r data.table