从两个变量中识别唯一ID

时间:2018-04-01 10:58:36

标签: r

假设我有一个包含两列P1和P2的数据帧。我想得到的是一个名为ID的新列,P1的相同值获得相同的ID,并且P2的相同值获得相同的ID。

P1  P2
a   1
a   1
a   2
b   2
c   3
c   4

所以,我想获得ID列如下:

P1  P2 ID
a   1  1
a   1  1
a   2  1
b   2  1
c   3  2
c   4  2

我怎样才能在R?

中这样做

1 个答案:

答案 0 :(得分:4)

获得此功能的一种方法是将数据视为图表。 ID是图表的连接组件。

IDs = read.table(text="P1  P2
a   1
a   1
a   2
b   2
c   3
c   4",
header=TRUE, stringsAsFactors=FALSE)

library(igraph)
G = graph_from_edgelist(as.matrix(IDs), directed = FALSE)
IDs$ID = components(G)$membership[IDs$P1]
IDs
  P1 P2 ID
1  a  1  1
2  a  1  1
3  a  2  1
4  b  2  1
5  c  3  2
6  c  4  2

为了帮助想象这一点,

RES = bipartite_mapping(G)
V(G)$type = RES$type
LO = layout_as_bipartite(G)
plot(G, layout=LO)

Graph View