peterduus的个人博客分享 http://blog.sciencenet.cn/u/peterduus

博文

整理关系列表的R代码,可供进一步生成.net文件

已有 5092 次阅读 2014-6-16 12:49 |个人分类:网络分析|系统分类:科研笔记| R软件, 网络文件

在数据处理中往往会碰到如下常见格式:

第一列为总称,后面多列都表示该总称名下各种细类。例如:

公交线路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[[i]]);

 for(j in 2:cn)

   {

     if(sourceData[[i]][j]!="")

      {

       resultData[[m]]<-sourceData[[i]][1];

       resultData[[m]][2]<-sourceData[[i]][j];

       m<-m+1;

      }

   }

 }

 return(resultData);

}

###############################################################################


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





https://blog.sciencenet.cn/blog-792243-803818.html

上一篇:关于“三素”(激素、抗生素和维生素)的感想。
收藏 IP: 49.65.32.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (3 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-11-23 12:48

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部