【问题标题】:Find combinations of rows grouped by a column by picking 1 row from each group in dataframe通过从数据框中的每个组中选择 1 行来查找按列分组的行组合
【发布时间】:2019-09-27 12:15:34
【问题描述】:

我有一个可以按列分组的数据框。特定组中的每一行都有一个唯一的 ID。通过从每组中选择 1 行,我想形成所有可能的组合。

我已经尝试通过combn()expand.grid() 解决它。但无法得到想要的解决方案。

我有以下类型的数据

Col1  id  Unique id
A     1     A_1
A     2     A_2
B     1     B_1
C     1     C_1
C     2     C_2
C     3     C_3

我想要这样的东西:

以下类型的组或数据框:

(A_1,B_1,C_1)
(A_1,B_1,C_2)
(A_1,B_1,C_3)
(A_2,B_1,C_1)
(A_2,B_1,C_2)
(A_2,B_1,C_3)

这里我只展示了 A、B、C 三个组。 我是真正的数据集,我可以有任意数量的组,每行可以有任意数量的 id。 请尽可能用代码或逻辑帮助我。

【问题讨论】:

  • 你能详细说明一下输出是如何构造的吗?
  • 基本上我在每个组中有不同数量的行,它们也有多个列。我想要行组合并从中创建数据框列表。然后我想对每个数据帧执行特定的功能
  • 但是您的输出是如何构造的?我无法立即看到获取 fx (A_1,B_1,C_3) 的连接。
  • 基本上 A_1、B_1、C_3 将是 Dataframe 中的行。同样,每个组合都会有一个数据框。我想将所有这些 Dataframe 存储在一个列表中,然后对每个 Dataframe 执行特定的功能。

标签: r combinations


【解决方案1】:

您可以将unique_id 拆分为Col1,然后使用expand.grid()

expand.grid(split(df$Unique_id, f = df$Col1))

    A   B   C
1 A_1 B_1 C_1
2 A_2 B_1 C_1
3 A_1 B_1 C_2
4 A_2 B_1 C_2
5 A_1 B_1 C_3
6 A_2 B_1 C_3

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-25
    • 1970-01-01
    • 1970-01-01
    • 2017-11-03
    • 1970-01-01
    • 2017-10-10
    • 1970-01-01
    • 2015-01-03
    相关资源
    最近更新 更多