2017-04-26 41 views
0

背景:我使用的R 2與一些軟件包一起從售票系統中提取JSON數據。我拉着所有的用戶,並希望建立一個報告結構。的R - 員工報告結構

我有一個包含員工及其管理者的數據集。這些列是這樣命名的(「員工」和「經理」)。我正在嘗試構建一個報告結構的樹狀圖,以便查看根。我們正處在一個IT組織,但我拉着所有的員工數據,所以這看起來是這樣的:

公司 - >業務部 - >管理 - >董事 - >集團管理器 - >管理 - >員工

這是基本的想法。有些地區的樹木結構很小,有些則是多層次的。基本上,我試圖做的是得到一棵樹,或者我可以參考的報告結構,這樣我就可以爲員工確定他們的導演是誰。這可能會被刪除1級或刪除多達5或6級。

我碰到了data.tree,但到目前爲止,當我看着它時,我必須提供一個定義該結構的pathString。因爲我只有兩列,我想要做的就是丟掉這個數據幀到一個函數,並將它遍歷列表,找到員工,把它放在該經理下,當它發現經理作爲僱員,將它嵌入在他們的直接報告下,以及嵌套在它們下面的任何東西。

我一直無法弄清楚如何使data.tree做到這一點沒有確定pathString,但這樣做,我只能建立在我所知道的每一行的pathString - 員工和他們的經理。結果是一棵樹只有兩層,董事沒有連接到他們的集團經理,集團經理沒有連接到他們的經理等等。

我想過寫一些邏輯/循環經歷和這樣做,但必須有一個更簡單的方法,或者我可以用它來做到這一點的包裝。也許我沒有界定pathString正確....

最後,我想什麼,最終的結果是與看起來像列的數據幀:

員工,Manager1,Manager2,Manager3, ManagerX,...

當然某些行只會有1列和2項,但其他人可以走了很多層次。一旦我有了這個,我可以在我們的配置管理系統中查找設備,找到所有者並在合適的導演下彙總這些計數。

任何幫助將不勝感激。我無法發佈數據,因爲它本質上是保密的,但它僅包含員工及其經理。我只需要連接所有的點...謝謝!

+0

在未來,我會建議提供一些示例示例數據,並要求更短的問題 - 這會增加你得到更快答覆的可能性。 –

回答

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) 

結果:

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

這是我期待的,但是當我對我的數據幀運行,我得到:「錯誤FromDataFrameNetwork(DF):找不到根名稱網絡不是一棵樹!」上面的示例正是我正在尋找的內容,但是我的數據具有空格和用戶標識。一個例子是:「SMITH,JOHN A12345」。這是格式。數據元素的格式是否關閉data.tree?我試過你的示例代碼,它工作正常。我猜這是我的數據如何格式化。我使用的是數據框,每一列都是一個字符矢量,我有12k行。 – azdatasci

+0

請建立一個像我所做的例子數據框,並將其添加到您的問題。組成數據,但它應該匹配你的數據並使用相同的列名。 –

+0

我做了一些測試,格式化你的例子與我的數據,它適用於該邊緣情況。我想知道它是否與我有關,可能讓樹木斷開連接......換句話說,我可能會有一些組織機構不能連接到另一個組織來與整棵樹結合在一起。 – azdatasci