【发布时间】:2018-03-05 22:04:50
【问题描述】:
我创建一个节点列表如下:
name <- c("Joe","Frank","Peter")
city <- c("New York","Detroit","Maimi")
age <- c(24,55,65)
node_list <- data.frame(name,age,city)
node_list
name age city
1 Joe 24 New York
2 Frank 55 Detroit
3 Peter 65 Maimi
然后我创建一个边缘列表如下:
from <- c("Joe","Frank","Peter","Albert")
to <- c("Frank","Albert","James","Tony")
to_city <- c("Detroit","St. Louis","New York","Carson City")
edge_list <- data.frame(from,to,to_city)
edge_list
from to to_city
1 Joe Frank Detroit
2 Frank Albert St. Louis
3 Peter James New York
4 Albert Tony Carson City
请注意,节点列表和边列表中的名称不会 100% 重叠。我想创建一个包含所有名称的主节点列表,同时捕获城市信息。这是我的 dplyr 尝试这样做:
new_node <- edge_list %>%
gather("from_to", "name", from, to) %>%
distinct(name) %>%
full_join(node_list)
new_node
name age city
1 Joe 24 New York
2 Frank 55 Detroit
3 Peter 65 Maimi
4 Albert NA <NA>
5 James NA <NA>
6 Tony NA <NA>
我需要弄清楚如何添加 to_city 信息。我需要在我的 dplyr 代码中添加什么来实现这一点?谢谢。
【问题讨论】:
-
如果有多个边从同一个节点开始,主列表会是什么样子?那可能吗?如果我理解正确,你可以做一个
left_join(new_node, edge_list, by = c('name' = 'from') -
是的,一个节点可以有多个边。左连接没有按预期工作。