gpt4 book ai didi

r - 从集群信息中查找网络链接

转载 作者:行者123 更新时间:2023-12-01 13:14:51 27 4
gpt4 key购买 nike

我有如下所示的网络数据:

data <- data.frame(id = as.character(1:20),
cluster = sample(c("a", "b", "c"), 20, replace = T))
head(data)

# id cluster
# 1 b
# 2 b
# 3 c
# 4 a
# 5 c
# 6 a
# 7 a

过去,我已经成功地从链接中获取了集群数据,但反过来却不行。我尝试使用 igraph 包进行网络分析,但找不到能给我满意结果的函数,而且我不想依赖循环,因为它们效率低下,而且我通常尽量远离他们。

预期结果

我想知道是否有一种有效的方法来创建一个新的 data.frame,在一个集群中包含所有可能的“链接”,这样我就可以得到一个 data.frame 看起来像:

id1 id2 cluster
4 6 a
7 4 a
7 6 a
1 2 b
3 5 c

最佳答案

您可以在 中执行此操作:

set.seed(123)
data <- data.frame(id = as.character(1:20),
cluster = sample(c("a", "b", "c"), 20, replace = T))

library(data.table)
setDT(data)[, id:=as.character(id)][, t(combn(id, 2, FUN = list)), by = cluster]
#>     cluster V1 V2        #>     cluster V1 V2        #>     cluster V1 V2    
#> 1: a 1 17 #> 21: c 12 8 #> 41: c 5 8
#> 2: a 1 7 #> 22: c 12 13 #> 42: c 5 13
#> 3: a 1 9 #> 23: c 15 16 #> 43: c 8 13
#> 4: a 1 10 #> 24: c 15 19 #> 44: b 14 18
#> 5: a 1 11 #> 25: c 15 3 #> 45: b 14 20
#> 6: a 17 7 #> 26: c 15 5 #> 46: b 14 2
#> 7: a 17 9 #> 27: c 15 8 #> 47: b 14 4
#> 8: a 17 10 #> 28: c 15 13 #> 48: b 14 6
#> 9: a 17 11 #> 29: c 16 19 #> 49: b 18 20
#> 10: a 7 9 #> 30: c 16 3 #> 50: b 18 2
#> 11: a 7 10 #> 31: c 16 5 #> 51: b 18 4
#> 12: a 7 11 #> 32: c 16 8 #> 52: b 18 6
#> 13: a 9 10 #> 33: c 16 13 #> 53: b 20 2
#> 14: a 9 11 #> 34: c 19 3 #> 54: b 20 4
#> 15: a 10 11 #> 35: c 19 5 #> 55: b 20 6
#> 16: c 12 15 #> 36: c 19 8 #> 56: b 2 4
#> 17: c 12 16 #> 37: c 19 13 #> 57: b 2 6
#> 18: c 12 19 #> 38: c 3 5 #> 58: b 4 6
#> 19: c 12 3 #> 39: c 3 8
#> 20: c 12 5 #> 40: c 3 13

或在 :

set.seed(123)
data <- data.frame(id = as.character(1:20),
cluster = sample(c("a", "b", "c"), 20, replace = T))

library(dplyr)
data %>% group_by(cluster) %>% mutate(id=as.character(id)) %>%
do(data.frame(t(combn(.$id, 2))))
#> # A tibble: 58 x 3
#> # Groups: cluster [3]
#> cluster X1 X2
#> <fct> <dbl> <dbl>
#> 1 a 1 17
#> 2 a 1 7
#> 3 a 1 9
#> 4 a 1 10
#> 5 a 1 11
#> 6 a 17 7
#> 7 a 17 9
#> 8 a 17 10
#> 9 a 17 11
#> 10 a 7 9
#> # ... with 48 more rows

reprex package 创建于 2019-05-16 (v0.2.1)

关于r - 从集群信息中查找网络链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56174405/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com