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

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

我有一个包含 1300 行的 2 列数据框。第一列有 160 个唯一值,第二列有 230 个唯一值。 我想获得具有最大行数的数据框子集,同时保持每列具有唯一值。

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

subject1 = c("A","B","C","D")
subject2 = c("0","1")
df = expand.grid(V1 = subject1, V2 = subject2)
df = df[-5,] #we delete a row so that the df does not have all possible combinations between subject1 and subject 2
  first second
   A    0
   B    0
   C    0
   D    0
   B    1
   C    1
   D    1

我想对数据框进行子集化,以便两列都只有唯一值。唯一的条件是它应该具有最大可能的行数。

期望的输出可以是:

  V1   V2
   B    0
   C    1

  V1   V2
   D    1
   A    0

或出现在原始 df 上的唯一值的任何可能组合。

在我看来是一个简单的问题,但我在这里没有找到任何类似的问题, 谢谢!

r dataframe unique
1个回答
0
投票

以下将适用于您的示例数据,这些数据看起来非常简单,因此不确定它是否适用于您的真实数据。如果没有,很高兴更新答案:

data.frame(first = df$first[duplicated(df$first)],
           second = unique(df$second[duplicated(df$second)]))

输出

  first second
1     A      D
2     C      E
© www.soinside.com 2019 - 2024. All rights reserved.