关于网络分析软件Pajek的数据输入问题
要做网络分析,首先就要有一个可供分析的网络。许多人碰到的第一个困难就是,手头有点数据,想要做分析,但是不知道怎么把数据变成网络文件。在这里谈一点个人的建议。
1)明确什么是点,什么是线。
最常见的列表形式是分成两列。设想第一列表示的是连线的一端,第二列表示的是连线的另一端。如果关系是有方向性的,那么这样的表达方式就意味着从第一列点指向第二列的点的箭头。
AAA [/td][td]AAA [/td][td]AAA [/td][td]BBB [/td][td]BBB [/td][td]CCC [/td][td]CCC [/td][td]CCC [/td][td]UUU [/td][td]WWW [/td][td]如果情况复杂一点,涉及到连线的强度,那么列出来的表格就可能有三列,多出来的第三列,表示的就是第一列和第二列为端点的连线的强度值。 AAA [/td][td]1.9 [/td][/tr]
[tr][td]YYY [/td][td]AAA [/td][td]1.3 [/td][/tr]
[tr][td]UUU [/td][td]BBB [/td][td]3.6 [/td][/tr]
[tr][td]WWW [/td][td]CCC [/td][td]1.1 [/td][/tr]
[tr][td]BBB [/td][td]UUU [/td][td]4.2 [/td][/tr]
[tr][td]AAA [/td][td]这一步往往让人不知所措,网络文件格式众多,这里先介绍Pajek常用的.net格式。 Pajek的官网上提供了两个程序:Excell2Pajek和TXT2Pajek。分别可以把Excell格式和TXT格式的数据转换成Pajek的.net格式。虽然方便,但各自有弊端。
Txt2Pajek对中文的支持不佳,但是可以识别第三列的连线强度值。
除了以上两个程序以外,还有一个叫做NodeXL的工具。这是一个EXCELL插件,安装后可以像EXCELL的其他图表绘制程序那样对EXCELL文件进行绘图,只不过是专门绘制网络图。它可以适用于Office2007的.xlsx格式,但是同样对中文的支持差,用它转换成的.net文件,如果含有中文,往往都显示是问号。
如果网络不是很大,那么直接用手工编制即可。以下括号中的内容是作为注意点,而不正式出现在文件中。
1 "AAA"(一定要用半角英文括号,这里表示1号顶点“AAA”。顶点序号后一定要空格)
3 "CCC"
5 "WWW"
7 "YYY"
9 "VVV"
*Arcs(表示以下定义的是弧,如果是无方向的连线,则用*Edges)
1 7 2.1
2 4 0.4
*Edges
3 4 1.1
4 10 4.2
(如果是)
需要注意的是,每一行都需要靠左,前面不允许有空格,而字符之间的隔断,必须是用空格键分开,而不能用制表符Tab键来隔断。有些朋友喜欢在EXCELL中先编辑好了复制黏贴到文本文件中,但是黏贴的时候,列与列之间Tab键隔断,就会导致Pajek不识别这个文件。
我有一阵子总是要编辑各种数据,不胜其烦,于是写了一小段Matlab代码。供参考。
function [vertices,arcs] =makeNet(A,W)
%注意需要按照顺序排列输入。
%vertices把所有的顶点编号按序排列
n=length(A);
arcs(:,3)=W;
h=length(vertices);
end;
for b=1:n
end;
for c=1:length(vertices)
arcs(d,1)=c;
arcs(d,2)=c;
end;
==============================================================
用以上代码处理过之后,直接按照手工编制法的介绍,制作网络文件,从而免去手工输入的麻烦。
转载本文请联系原作者获取授权,同时请注明本文来自林枫科学网博客。
链接地址:http://blog.sciencenet.cn/blog-792243-645044.html
来自群组: ucinet长沙学习群 |