背景:我正在使用R和一些软件包从票务系统中提取JSON数据。我正在拉所有用户,并希望建立一个报告结构。
我有一个包含员工及其经理的数据集。这些列就是这样命名的(“雇员”和“经理”)。我正在尝试构建一棵到根的报告结构树。我们在一个IT组织中,但是我要提取所有员工数据,所以看起来像这样:
公司->业务部门->执行人员->董事->集团经理->经理->员工
这是基本思想。一些区域的树结构很小,其他区域则是多个层次。基本上,我想做的是得到一棵树或我可以引用的报告结构,以便为员工确定其董事是谁。可以删除1个级别,也可以删除最多5个或6个级别。
我遇到过data.tree,但是到目前为止,就我而言,我必须提供一个pathString定义该结构的。由于我只有两列,因此我想做的就是将此数据框放入函数中,并在找到员工时遍历列表,将其放在该经理下,当它找到该经理作为员工时,将其与嵌套在其下的所有内容一起嵌套在其直接报告下。
在data.tree没有定义的情况下pathString,我一直无法弄清楚如何做到这一点,但是在这样做时,我只能pathString基于我对每一行(员工及其经理)所了解的内容。结果是一棵只有2个级别的树,并且董事未连接到其组经理,组经理未连接到其经理,依此类推。
我曾考虑过编写一些逻辑/循环来完成此操作,但是必须有一种更简单的方法或程序包可用于执行此操作。也许我没有pathString正确定义...。
最终,我希望最终结果是一个数据列,其中的列如下所示:
员工,经理1,经理2,经理3,经理X ...
当然,有些行只会在第1列和第2列中有条目,但其他一些行可能会上升许多级别。了解这些信息后,便可以在我们的配置管理系统中查找设备,找到所有者并将这些计数汇总到适当的主管下。
任何帮助将不胜感激。我无法发布数据,因为它本质上是机密的,但仅包含员工及其经理。我只需要连接所有点...谢谢!
data.tree包FromDataFrameNetwork仅在以下情况下具有此功能:
library(data.tree)
DataForTree <- data.frame(manager = c("CEO","sally","sally","sue","mary", "mary"),
employee = c("sally","sue","paul","mary","greg", "don"),
stringsAsFactors = FALSE)
tree <- FromDataFrameNetwork(DataForTree)
print(tree)
Run Code Online (Sandbox Code Playgroud)
结果是:
1 CEO
2 °--sally
3 ¦--sue
4 ¦ °--mary
5 ¦ ¦--greg
6 ¦ °--don
7 °--paul
Run Code Online (Sandbox Code Playgroud)