删除相同的列,同时每组保留一个

时间:2018-08-04 14:59:35

标签: r duplicates

df <- data.frame(a = c(1, 2, 3, 4, 5), b = c(2, 3, 5, 6, 3), c = c(1, 2, 3, 4, 5), d = c(2, 3, 4, 4, 4), e = c(2, 3, 5, 6, 3))  


  a b c d e
  1 2 1 2 2
  2 3 2 3 3
  3 5 3 4 5
  4 6 4 4 6
  5 3 5 4 3 

我的问题很简单,但我自己无法解决。是否有一种简单的方法来删除除一个以外的所有重复列(在每个“组”中,即在这种情况下,我们有(a,c)和(b,e)组)?

我的预期输出:

  a b d
  1 2 2
  2 3 3
  3 5 4
  4 6 4
  5 3 4

由于特定的情况,我无法将数据框转换为矩阵,因此必须将其应用于数据框,可能适用于更大容量的数据框。

2 个答案:

答案 0 :(得分:2)

我们可以转置数据帧,然后使用duplicated函数选择非重复的列。

df[, !duplicated(t(df))]
#   a b d
# 1 1 2 2
# 2 2 3 3
# 3 3 5 4
# 4 4 6 4
# 5 5 3 4

答案 1 :(得分:2)

怎么样:

df[!duplicated(as.list(df))]

  a b d
1 1 2 2
2 2 3 3
3 3 5 4
4 4 6 4
5 5 3 4