我有一个包含 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
谢谢!
获取列和子集中的
min
唯一性
lst1 <- lapply(df, unique)
mn <- min(lengths(lst1))
data.frame(lapply(lst1, head, n = mn))
first second
1 A D
2 B E