2016-04-11 39 views
1

15 yılda 130 şirket departmanı içeren bir panel veriye sahibim. Veriler bu şirketlerin kenar listelerini içermektedir. Her bir şirketin hiyerarşik seviyelerini nasıl sayarım ve her bölümün H'deki hiyerarşinin seviyesini nasıl belirlerim? Bu durumdaR'de hiyerarşi seviyeleri nasıl sayılır?

source target 
1 A  B 
2 A  C 
3 A  D 
4 B  E 
5 B  F 
6 C  G 
7 D  H 
8 D  I 
9 D  J 
10 G  K 

, üst A ve alt şirketin hiyerarşik düzey ben bölümlerin paneli verileri iki değişken oluşturabilirsiniz umut 4'tür K. olduğunu. Şunun gibi:

year compname department complevel departlevel 
1 2000 Ben Corp. A   4   1 
2 2000 Ben Corp. B   4   2 
3 2000 Ben Corp. C   4   2 
4 2000 Ben Corp. D   4   2 
5 2000 Ben Corp. E   4   3 
6 2000 Ben Corp. F   4   3 
7 2000 Ben Corp. G   4   3 
8 2000 Ben Corp. H   4   3 
9 2000 Ben Corp. I   4   3 
10 2000 Ben Corp. J   4   3 
11 2000 Ben Corp. K   4   4 

cevap

1

Belki bu deneyin:

library(igraph) 
df <- read.table(text = ' 
source target 
1 A  B 
2 A  C 
3 A  D 
4 B  E 
5 B  F 
6 C  G 
7 D  H 
8 D  I 
9 D  J 
10 G  K 
') 

dönüştürme

g <- graph.data.frame(df) 

olsun rütbe tablosunu grafiğini oluşturmak için:

(manuel giriş 'üst' düğüm gerekir)
data.frame(node = names(shortest.paths(g)[,'A']), rank = shortest.paths(g)[,'A']+1) 
    node rank 
A A 1 
B B 2 
C C 2 
D D 2 
G G 3 
E E 3 
F F 3 
H H 3 
I I 3 
J J 3 
K K 4 
0

Verileri kullanabilirsiniz. E paketi:

library(data.tree) 
df <- read.table(text = ' 
source target 
1 A  B 
2 A  C 
3 A  D 
4 B  E 
5 B  F 
6 C  G 
7 D  H 
8 D  I 
9 D  J 
10 G  K 
') 

tree <- FromDataFrameNetwork(df) 
print(tree, "level") 

Bu size verecektir:

 levelName level 
1 A     1 
2 ¦--B    2 
3 ¦ ¦--E   3 
4 ¦ °--F   3 
5 ¦--C    2 
6 ¦ °--G   3 
7 ¦  °--K  4 
8 °--D    2 
9  ¦--H   3 
10  ¦--I   3 
11  °--J   3