如何使用R从分层表派生父子表?

如何使用R从分层表派生父子表?,r,tree,hierarchical-data,R,Tree,Hierarchical Data,我试图使用collapsabletreehtmlwidget,它需要一个包含每个节点一行的数据帧,即包含所有父子关系(我相信在data.tree术语中称为DataFrameNetwork),以便利用一些更有用的特性 然而,我从一个包含每个叶的一行的数据帧开始(称为DataFrameTable?),并努力以正确的格式获取它。我相信最简单的方法是使用data.tree包,但我愿意接受建议,特别是如果它们是整洁的,并且避免循环的话 例如: 数据: lev1我使用循环从注释中概括了上面的代码。 将在今天

我试图使用
collapsabletree
htmlwidget,它需要一个包含每个节点一行的数据帧,即包含所有父子关系(我相信在
data.tree
术语中称为DataFrameNetwork),以便利用一些更有用的特性

然而,我从一个包含每个叶的一行的数据帧开始(称为DataFrameTable?),并努力以正确的格式获取它。我相信最简单的方法是使用
data.tree
包,但我愿意接受建议,特别是如果它们是整洁的,并且避免循环的话

例如:

数据:


lev1我使用循环从注释中概括了上面的代码。
将在今天晚些时候开发tidyverse解决方案

更改为矩阵形式

df_mat <- as.matrix(df)
希望这有帮助

图书馆(动物园)
库(数据表)
图书馆(dplyr)
rbindlist(lappy)(如.data.frame(rollappy)(名称(df),2,c),stringsAsFactors=F),
功能(x)选择(df,c(x)))%>%
不同的()%>%

`colnamesmay这将有助于
df_mat谢谢,我已经更新了我的帖子,以澄清我正在寻找一个具有任意层次结构的通用解决方案。谢谢你,尽管我建议以后你在追踪用户结束问题之前,给4个多小时。我真的很高兴它帮助你解决了你的问题!顺便说一句,请注意“接受答案不是强制性的;不要被迫接受你收到的第一个答案。等到你收到一个很好回答你问题的答案。”
result <- data.frame(parent = c(lev1, lev2),
                     child = c(lev2, lev3)) %>% unique()
df_mat <- as.matrix(df)
df_output <- matrix(nrow=0,ncol=2)
for (i in 1:(ncol(df_mat)-1))
{
  df_output <- rbind(df_output,df_mat[,c(i,i+1)])
}
df_output <- as.data.frame(df_output)
colnames(df_output) <- c("Parent","Child")
df_output
    parent child
 1:      A     a
 2:      A     b
 3:      B     c
 4:      B     d
 5:      C     e
 6:      a     1
 7:      a     2
 8:      b     3
 9:      c     4
10:      d     5
11:      e     6
df <- structure(list(lev1 = structure(c(1L, 1L, 1L, 2L, 2L, 3L), .Label = c("A", 
"B", "C"), class = "factor"), lev2 = structure(c(1L, 1L, 2L, 
3L, 4L, 5L), .Label = c("a", "b", "c", "d", "e"), class = "factor"), 
    lev3 = 1:6), .Names = c("lev1", "lev2", "lev3"), row.names = c(NA, 
-6L), class = "data.frame")