【问题标题】:Make a group_indices based on several columns根据几列制作 group_indices
【发布时间】:2017-12-18 04:09:19
【问题描述】:

我想生成索引以根据两列对观察进行分组。但我希望小组由共享的观察组成,至少有一个共同的观察。我可以看到如何根据观察结果创建组,这些观察结果具有共同的观察结果,但不仅仅是其中之一。

以数据框为例:

dt <- data.frame(id=1:10,
             G1 = c("A","A","B","B","C","C","C","D","E","F"),
             G2 = c("Z","X","X","Y","W","V","U","s","T","T"))

我想要一个专栏

1,1,1,1,2,2,2,3,4,4

我尝试使用 dplyr 的 group_indices,但没有成功。

【问题讨论】:

    标签: r dplyr


    【解决方案1】:

    使用 igraph 获取成员资格,然后映射名称:

    library(igraph)
    
    # convert to graph, and get clusters membership ids
    g <- graph_from_data_frame(df1[, c(2, 3, 1)])
    myGroups <- components(g)$membership
    
    myGroups 
    # A B C D E F Z X Y W V U s T 
    # 1 1 2 3 4 4 1 1 1 2 2 2 3 4 
    
    # then map on names
    df1$group <- myGroups[df1$G1]
    
    
    df1
    #    id G1 G2 group
    # 1   1  A  Z     1
    # 2   2  A  X     1
    # 3   3  B  X     1
    # 4   4  B  Y     1
    # 5   5  C  W     2
    # 6   6  C  V     2
    # 7   7  C  U     2
    # 8   8  D  s     3
    # 9   9  E  T     4
    # 10 10  F  T     4
    

    【讨论】:

    • 谢谢,这个答案对我来说似乎很好,我宁愿有一个 dplyr 的答案,但无论如何都很好。我不明白您所说的“输入会改变”是什么意思:您的方法不能与其他数据一起使用吗?
    • @Malta 因为我们没有真实数据,我无法判断,如果您的数据与您的示例相似,那么一切都应该按预期工作。
    • 我的数据很相似,太好了,谢谢!
    猜你喜欢
    • 2023-02-08
    • 2021-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-09
    • 2019-07-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多