存储和更新R中观测值之间的对称多对多关系
我有一个闪亮的应用程序,我正在使用它来查看和管理一些包含大量相关观察结果的数据。由于原始来源的技术限制,每个观察最初仅与另一个观察相关联,通过将事物链接在一起形成更大的组(a与B相关,B与C相关,C与B相关) 下面是一个简化的示例,不包括闪亮的GUI:存储和更新R中观测值之间的对称多对多关系,r,database,sqlite,dataframe,relationship,R,Database,Sqlite,Dataframe,Relationship,我有一个闪亮的应用程序,我正在使用它来查看和管理一些包含大量相关观察结果的数据。由于原始来源的技术限制,每个观察最初仅与另一个观察相关联,通过将事物链接在一起形成更大的组(a与B相关,B与C相关,C与B相关) 下面是一个简化的示例,不包括闪亮的GUI: #How the data comes from the original source original_data<-tribble( ~observation, ~related_to, "A",
#How the data comes from the original source
original_data<-tribble(
~observation, ~related_to,
"A", "B",
"B", "C",
"C", "E",
"D", NA,
"E", "D"
)
#After I go through by hand and tally up related cases
my_handtyped_data<-tribble(
~observation, ~related_to,
"A", "B,C,D,E",
"B", "A,C,D,E",
"C", "A,B,D,E",
"D", "A,B,C,E",
"E", "A,B,C,D"
#数据如何来自原始来源
原始数据我稍微修改了您的数据(引入了节点'Q',所以我们得到了两组nof节点…)
使用igraph
[package],您可以轻松获得彼此相关的节点组
**sample data**
original_data<-tribble(
~observation, ~related_to,
"A", "Q", # <-- !!
"B", "C",
"C", "E",
"D", NA,
"E", "D"
)
library( tibble )
library( igraph )
#get df of nodes
nodes <- tibble( name = unique( na.omit( stack( original_data )$values ) ) )
#create list of edges
edges <- original_data[ complete.cases( original_data ), ]
#build igraph
g <- graph_from_data_frame(d = edges, vertices = nodes, directed = FALSE)
这就是为什么我问,这完全没有必要做任何额外的事情。我曾在graph数据库中研究过这一点,但出于某种原因,当我试图查找R软件包时,igraph从未出现过。自从google“改进”了他们的算法之后。。。
**sample data**
original_data<-tribble(
~observation, ~related_to,
"A", "Q", # <-- !!
"B", "C",
"C", "E",
"D", NA,
"E", "D"
)
library( tibble )
library( igraph )
#get df of nodes
nodes <- tibble( name = unique( na.omit( stack( original_data )$values ) ) )
#create list of edges
edges <- original_data[ complete.cases( original_data ), ]
#build igraph
g <- graph_from_data_frame(d = edges, vertices = nodes, directed = FALSE)
#get groups of nodes
groups(components(g) )
# $`1`
# [1] "A" "Q"
#
# $`2`
# [1] "B" "C" "D" "E"