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>
背景:我正在使用 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>