R - 员工报告结构

R - Employee Reporting Structure

背景:我正在使用 R 和一些软件包从票务系统中提取 JSON 数据。我正在拉动所有用户并希望建立一个报告结构。

我有一个包含员工及其经理的数据集。这些列是这样命名的("Employee" 和 "Manager")。我正在尝试构建一个向上到根的报告结构树。我们在一个 IT 组织中,但我正在提取所有员工数据,所以这看起来像:

公司 -> 业务部门 -> 执行官 -> 总监 -> 集团经理 -> 经理 -> 员工

这是基本思想。有些区域有一个小的树结构,有些区域有多个层次。基本上,我想做的是获得一棵树或我可以参考的报告结构,这样我就可以为员工确定他们的主管是谁。这可能是删除 1 个级别或最多删除 5 或 6 个级别。

我遇到了 data.tree,但到目前为止,在我看来,我必须提供定义该结构的 pathString。因为我只有两列,所以我想做的是将这个数据框放入一个函数中,让它在找到员工时遍历列表,把它放在那个经理下面,当它发现那个经理是员工时,将其嵌套在他们的直接下属之下,以及嵌套在他们之下的任何东西。

我无法弄清楚如何在不定义 pathString 的情况下使 data.tree 执行此操作,但在这样做时,我只能在什么上构建 pathString我知道每一行 - 员工和他们的经理。结果是一棵只有 2 层的树,董事没有连接到他们的组经理,组经理也没有连接到他们的经理等等。

我考虑过编写一些 logic/loops 来完成并执行此操作,但必须有更简单的方法或程序包可用于执行此操作。也许我没有正确定义 pathString....

最终,我希望最终结果是一个数据框,其列如下所示:

员工,经理 1,经理 2,经理 3,经理 X,...

当然,有些行只会在第 1 列和第 2 列中包含条目,但其他行可能会上升很多级别。一旦我有了这个,我就可以在我们的配置管理系统中查找设备,找到所有者并将这些计数汇总到适当的主管下。

如有任何帮助,我们将不胜感激。我不能 post 数据,因为它本质上是机密的,但它只包含员工和他们的经理。我只需要连接所有的点...谢谢!

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)

结果:

1 CEO                 
2  °--sally           
3      ¦--sue         
4      ¦   °--mary    
5      ¦       ¦--greg
6      ¦       °--don 
7      °--paul  

hR包是专门为解决使用people/employee数据进行数据分析的需要而设计的;尽管如此,在这一点上它是最小的。 hierarchy 函数可以根据需要生成宽数据框;这有助于加入其他数据并继续分析。

library(hR)
ee = c("Dale@hR.com","Bob@hR.com","Julie@hR.com","Andrea@hR.com")
supv = c("Julie@hR.com","Julie@hR.com","Andrea@hR.com","Susan@hR.com")
hierarchy(ee,supv,format="wide")

  Employee      Supv1         Supv2        Supv3
1   Dale@hR.com Susan@hR.com Andrea@hR.com Julie@hR.com
2    Bob@hR.com Susan@hR.com Andrea@hR.com Julie@hR.com
3  Julie@hR.com Susan@hR.com Andrea@hR.com         <NA>
4 Andrea@hR.com Susan@hR.com          <NA>         <NA>