我从年度文件和行绑定读取的数据跨越了几十年。我发现有时候我最终会得到具有重复值的列,并且我想删除重复的列。这必须发生在非常大的表(数百万行,数百列)上,因此进行成对检查可能不可行。
示例数据:
df <- data.frame(id = c(1:6), x = c(15, 21, 14, 21, 14, 38), y = c(36, 38, 55, 11, 5, 18), z = c(15, 21, 14, 21, 14, 38), a = c("D", "B", "A", "F", "H", "P"))
> df
id x y z a
1 1 15 36 15 D
2 2 21 38 21 B
3 3 14 55 14 A
4 4 21 11 21 F
5 5 14 5 14 H
6 6 38 18 38 P
z
是x
的副本,因此应将其删除。所需结果:
> df2
id x y a
1 1 15 36 D
2 2 21 38 B
3 3 14 55 A
4 4 21 11 F
5 5 14 5 H
6 6 38 18 P
答案 0 :(得分:1)
我们可以在转置后的数据集上应用duplicated
并将其用于子集列
df[!duplicated(t(df))]
# id x y a
#1 1 15 36 D
#2 2 21 38 B
#3 3 14 55 A
#4 4 21 11 F
#5 5 14 5 H
#6 6 38 18 P