r - 我怎样才能得到一个按谱系相互关联的值(value)指数列表? [R]

标签 r relationship matching

假设我有一个数据框,其中有两列指示平行值之间的直接关系。

c2 <- c(2,5,7,8,10)
c1 <- c(1,3,2,7,5)
df <- data.frame(c1, c2)

这样:

1 与 2 [1] 相关, 2 与 7 [3] 相关, 7 与 8 有关 [4]

所以我得到了索引 1,3 和 4 的向量

然后3与5相关[2], 5 与 10 相关 [5]

所以我得到了索引 2 和 5 的向量?

它伤害了我的大脑。

最佳答案

这可以使用 igraph 库有效地解决:

common_ids <- clusters(graph_from_data_frame(df, directed = FALSE))$membership
split(1:nrow(df), common_ids[match(df$c1, names(common_ids))])

$`1`
[1] 1 3 4

$`2`
[1] 2 5

如果组的成员也感兴趣:

split(names(common_ids), common_ids)

$`1`
[1] "1" "2" "7" "8"

$`2`
[1] "3"  "5"  "10"

关于r - 我怎样才能得到一个按谱系相互关联的值(value)指数列表? [R],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66049983/

相关文章:

ios - SWIFT 的核心数据 : How to delete object from Relationship entity?

c++ - 匹配两个字符串的宏定义

python - 在Python中根据声音/同音词匹配字符串?

r - 调用 httr::oauth_service_token() 时硬崩溃 - 双重释放或损坏(fasttop)

swift - Steam 4亲子关系

r - 将一列中的值除以 R 中另一列中的值

MySQL - 一对多关系无法正常工作

c++ - 满足以下条件的高效图算法?

r - 在 R 的 full_join 中添加数据集标识符变量

r - 在ggplot中使用geom_bar()显示频率而不是计数