gpt4 book ai didi

R 找到元组的 "groups"

转载 作者:行者123 更新时间:2023-12-04 02:04:16 25 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





Make a group_indices based on several columns

(1 个回答)


2年前关闭。




我尝试根据两个变量( id3id1 )找到“组”( id2 ):

df = data.frame(id1 = c(1,1,2,2,3,3,4,4,5,5),
id2 = c('a','b','a','c','c','d','x','y','y','z'),
id3 = c(rep('group1',6), rep('group2',4)))


id1 id2 id3
1 1 a group1
2 1 b group1
3 2 a group1
4 2 c group1
5 3 c group1
6 3 d group1
7 4 x group2
8 4 y group2
9 5 y group2
10 5 z group2
例如 id1=1a 相关和 bid2 .但是 id1=2也与 a有关所以两者都属于一个组( id3=group1 )。但由于 id1=2id1=3分享 id2=c , 还有 id1=3属于该组 ( id3=1 )。元组的值 ((1,2),('a','b','c'))没有其他地方出现,因此没有其他行属于该组(通常标记为 group1)。
如果您需要照顾NA s,检查这个similar post
我的想法是基于 id3 创建一个表随后将在循环中填充。
solution = data.frame(id3= c('group1', 'group2'),id1=NA, id2=NA)
group= 1

for (step in c(1:1000)) { # run many steps to make sure to get all values
solution$id1[group] = # populate
solution$id2[group] = # populate

if (fully populated) {
group = group +1
}}
我正在努力了解如何填充。

免责声明:我问了一个类似的问题 here ,但在 id2 中使用名称导致很多人向我指出 R 中的模糊字符串过程,这里不需要,因为存在精确的解决方案。我还在这篇文章中包含了我从那时起尝试过的所有代码。

最佳答案

您可以利用 igraph找到不同的网络集群

library(igraph)
g <- graph_from_data_frame(df, FALSE)
cg <- clusters(g)$membership
df$id3 <- cg[df$id1]
df

输出:
   id1 id2 id3
1 1 a 1
2 1 b 1
3 2 a 1
4 2 c 1
5 3 c 1
6 3 d 1
7 4 x 2
8 4 y 2
9 5 y 2
10 5 z 2

关于R 找到元组的 "groups",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54743184/

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