修剪具有唯一行的 2 列数据框,以便每列中的值都是唯一的

问题描述 投票:0回答:1

我有一个包含 1300 行的 2 列数据框。第一列有 162 个唯一值,第二列有 230 个唯一值。我想要一个 fata 框架,在 1300 种独特组合中,我们选择最大行数,同时保持每列具有唯一值。

这是一个玩具数据框,其中每一行都是值的唯一组合。

subject1 = c("A","B","C")
subject2 = c("D","E")
df = expand.grid(first = subject1, second = subject2)
df
  first second
   A    D
   B    D
   C    D
   A    E
   B    E
   C    E

但是,在

first
列中,值重复了两次,而在
second
列中,值重复了3次。 我想修剪数据框,使两列都只有唯一值。唯一的条件是它应该具有最大可能的行数。

期望的输出可以是:

first second
   A    D
   B    E

first second
   A    D
   C    E

或者任何可能的唯一值组合都可以。我尝试使用 distinct()、unique() 和 duplicated() 但没有成功。

df[!duplicated(df[,c('second')]),]
  first second
   A      D
   A      E

谢谢!

r dataframe unique
1个回答
0
投票

获取列和子集中的

min
唯一性

lst1 <- lapply(df, unique)
mn <- min(lengths(lst1))
data.frame(lapply(lst1, head, n = mn))
   first second
1     A      D
2     B      E
© www.soinside.com 2019 - 2024. All rights reserved.