首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何计算R中的层次结构级别?

如何计算R中的层次结构级别?
EN

Stack Overflow用户
提问于 2016-04-12 00:25:00
回答 2查看 813关注 0票数 2

我有一个面板数据,其中包含了15年来130个公司的部门。这些数据包括这些公司的边缘列表。我如何计算每个公司的层级,并在R中识别层级中的每个部门的层级?

代码语言:javascript
复制
    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

在本例中,顶部是A,底部是K。公司的层级是4。我希望我可以在部门的面板数据中创建两个变量。如下所示:

代码语言:javascript
复制
    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
EN

回答 2

Stack Overflow用户

发布于 2016-04-12 01:01:52

也许你可以试试这个:

代码语言:javascript
复制
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
')

转换为图形

代码语言:javascript
复制
g <- graph.data.frame(df)

获取排名表:(需要手工输入top节点)

代码语言:javascript
复制
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
票数 1
EN

Stack Overflow用户

发布于 2016-04-17 19:24:10

您可以使用data.tree包:

代码语言:javascript
复制
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")

这将为您提供:

代码语言:javascript
复制
       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
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36554205

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档