首页 > 解决方案 > 删除相同的列,同时从每个组中保留一个

问题描述

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

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

标签: rduplicates

解决方案


我们可以转置数据框,然后使用该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

推荐阅读