首页 > 解决方案 > 删除重复的列

问题描述

我有几十年的数据,我正在从年度文件和行绑定中读取这些数据。我发现有时我会得到具有重复值的列,我想删除重复的列。这必须发生在非常大的表(数百万行,数百列)上,因此进行成对检查可能不可行。

示例数据:

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

标签: rdplyrtidyr

解决方案


我们可以应用于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

推荐阅读