【问题标题】:R group_by one variable or (not and) another [duplicate]R group_by一个变量或(不是和)另一个[重复]
【发布时间】:2021-02-12 22:28:34
【问题描述】:

我有一个包含两个变量的数据集。举个简单的例子:

df <- rbind(c("A",1),c("B",2),c("C",2),c("C",3),c("D",4),c("D",5),c("E",1))

我想按第一个组件第二个组件对它们进行分组,所需的输出将是具有以下值的第三列:

c(1,2,2,2,3,3,1)

如果我使用dplyrgroup_bycur_group_id(),我将通过第一个第二个组件获取组,因此获得

c(1,2,3,4,5,6,7)

谁能以简单的方式帮助我,它可以是base R、dplyr 或data.table,以获得所需的组?

谢谢

【问题讨论】:

    标签: r dplyr group-by data.table


    【解决方案1】:

    也许igraph 对你来说可能是一个有用的工具

    library(igraph)
    df$grp <- membership(components(graph_from_data_frame(df, directed = FALSE)))[df$X1]
    

    给了

    > df
      X1 X2 grp
    1  A  1   1
    2  B  2   2
    3  C  2   2
    4  C  3   2
    5  D  4   3
    6  D  5   3
    7  E  1   1
    

    数据

    > dput(df)
    structure(list(X1 = c("A", "B", "C", "C", "D", "D", "E"), X2 = c(1L,
    2L, 2L, 3L, 4L, 5L, 1L)), row.names = c(NA, -7L), class = "data.frame")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-07-19
      • 1970-01-01
      • 2021-11-20
      • 1970-01-01
      • 2022-11-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多