微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从 R 中的单列创建到节点表

如何解决从 R 中的单列创建到节点表

我想制作一个网络图来表示数据库中表之间的连接。我有一个包含以下列的数据框:

我不确定迭代数据框以生成边缘表的最佳方法,该表创建从 - 到“column_name”相同的列(即 column_id 1 & 7)。我的数据框有 1,500 多行。

任何帮助或指导将不胜感激。

# Example dataframe with example values
df <- as.data.frame(rbind(
c("table_A","column1",1),c("table_A","column3",2),"column5",3),c("table_B",4),5),"column6",6),c("table_C",7),c("table_D",8),9),c("table_E",10),11)
))

colnames(df)[1] <- "table_name"
colnames(df)[2] <- "column_name"
colnames(df)[3] <- "column_id"
# Example desired output using column_id
edges <- as.data.frame(rbind(
c(1,c(1,c(7,c(2,c(4,c(3,c(5,c(6,11)
))

colnames(edges)[1] <- "from"
colnames(edges)[2] <- "to"

解决方法

基本的 R 选项

setNames(
  do.call(
    rbind,aggregate(
      column_id ~ column_name,df,function(x) list(data.frame(t(combn(x,2))))
    )$column_id
  ),c("From","To")
)

给予

   From To
1     1  7
2     1 10
3     7 10
4     2  4
5     2  8
6     4  8
7     3  5
8     3  9
9     5  9
10    6 11

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。