社会网络分析论坛 social network analysis forum

标题: 整理关系列表的R代码,可供进一步生成.net文件 [打印本页]

作者: snachina    时间: 2017-7-27 16:09
标题: 整理关系列表的R代码,可供进一步生成.net文件
在数据处理中往往会碰到如下常见格式:
第一列为总称,后面多列都表示该总称名下各种细类。例如:
公交线路1  站点1   站点2  站点3  站点4
公交线路2  站点1   站点3  站点5  站点8

现提供一段R代码,可把这种短列表变成长列表:
公交线路1 站点1
公交线路1 站点2
公交线路1 站点3
公交线路1 站点4
公交线路2 站点1
公交线路2 站点3
公交线路2 站点5
公交线路2 站点8

###############################################################################
#输入列表sourceData,该列表的第一列为起点,第二列及之后所有列,都是终点。
#例如 A 甲  乙  丙  丁
#     B 甲  戊  庚  壬
#经过上述转换后,显示为
#A 甲
#A 乙
#A 丙
#A 丁
#B 甲
#B 戊
#B 庚
#B 壬
#即从第一列指向之后的所有列。
#忽略其中的空字符串部分
#该结果可粘帖到.txt文本中,供txt2pajek.exe生成.net文件用
makeLineNet<-function(sourceData)
{
resultData<-list();
rn<-length(sourceData);
m<-1;
for(i in 1:rn)
{
cn<-length(sourceData[]);
for(j in 2:cn)
   {
     if(sourceData[][j]!="")
      {
       resultData[[m]]<-sourceData[][1];
       resultData[[m]][2]<-sourceData[][j];
       m<-m+1;
      }
   }
}
return(resultData);
}
###############################################################################

当然,还有一些reshape2或plyr这样的R包可以有函数进行上述转换。




转载本文请联系原作者获取授权,同时请注明本文来自林枫科学网博客。
链接地址:http://blog.sciencenet.cn/blog-792243-803818.html
[groupid=51]ucinet长沙学习群[/groupid]




欢迎光临 社会网络分析论坛 social network analysis forum (http://snachina.com/) Powered by Discuz! X3.3