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
由于特定的情况,我无法将数据框转换为矩阵,因此必须将其应用于数据框,可能适用于更大容量的数据框。
答案 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