找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 27189|回复: 9

[文本处理] 【已解决】如何根据多个文本共有的字段按指定规则合并内容?

[复制链接]
发表于 2016-1-8 17:17:56 | 显示全部楼层 |阅读模式
本帖最后由 sweet惜缘 于 2016-1-10 14:40 编辑

http://pan.baidu.com/s/1c1db5PQ————DTI_one.txt
http://pan.baidu.com/s/1hrepjEW————DTI_two.txt
http://pan.baidu.com/s/1pKfwS1X————link.txt        (上传受到限制,已上传到网盘)

link中为一对一的数据:共2531行
drug_ID1           drug_ID2
CID000002118        CID000000896
CID000002249        CID000002162
CID000002315        CID000002249
CID000002481        CID000001983
CID000002540        CID000002162
CID000002576        CID000002244
CID000002712        CID000002160
CID000002732        CID000002249
CID000002803        CID000002732
CID000003100        CID000002153

DTI_one.txt中则是每一个drug对应的freature1,数据类型为double,共245列
CID000000896  0.094964932         0.017092211          0.155580108                   ...
CID000002160 -0.062096048         -0.086881386          0.20744211                  ...         
CID000002732 -0.496820789         -0.190601593          0.28186401                   ...
CID000002118   -0.29739373          0.5744065          0.017642712                 ...
CID000002803        0                  -3.08E-16             -3.65E-16                       ...            

DTI_two.txt中则是每一个drug对应的freature2,数据类型为整形,共4144列       
CID000000896   0           1          0           1     ...
CID000002160   0     0          1          1         ...         
CID000002732   0          0          0           0         ...
CID000002118   0     1           1      0         ...
CID000002803   0            1      1      0         ...            

首先希望将DTI_one.txt与DTI_two.txt中相同编号ID的feature组合一起,输入到out.txt中,如下:
                                                   feature1(245列)                                             feature2(4144列)
CID000000896      0.094964932         0.017092211          0.155580108                   ...0           1          0           1     ...
CID000002160    -0.062096048         -0.086881386          0.20744211                  ...0           0          1          1         ...          
CID000002732    -0.496820789         -0.190601593          0.28186401                   ...0                  0          0           0         ...  
CID000002118    -0.29739373                  0.5744065          0.017642712                 ...0            1           1      0         ...  
CID000002803    0                           -3.08E-16               -3.65E-16                       ...0            1      1      0         ...               


最终希望得到文本如下,根据link.txt中的内容分别查找out.txt中drug的freature然后其在link.txt中的两个drug的先后顺序将两个drug的freature放入一行中,即为245X2+4144X2列)
drug_ID1           drug_ID2                               drug1_ freature1 (245列)      drug1_ freature2 (4144列)                                drug2_ freature1(245列)            drug2_ freature2(4144列)
CID000002118        CID000000896  0.094964932         0.017092211         0.155580108  ... 0    1   0  1   ...  -0.29739373  0.5744065   0.017642712.... 0   1  0   1...       
CID000002249        CID000002162  -0.078018598        -0.032563755  -0.04617945        ... 1    0   1  0   ...  -0.062096048  -0.086881386          0.20744211...1  0   1  0...
CID000002540        CID000002162   ......


灰常感谢思密达~~~~
发表于 2016-1-8 20:42:14 | 显示全部楼层
楼主也是有年头的伸手党了。
 楼主| 发表于 2016-1-8 20:47:45 | 显示全部楼层
回复 3# codegay


    哈哈哈哈哈 被发现了
发表于 2016-1-8 21:00:40 | 显示全部楼层
伸手有如扒手,也是一种职业~
 楼主| 发表于 2016-1-8 21:34:32 | 显示全部楼层
回复 4# WHY


    程序有效~~还是感谢啦~~~~
发表于 2016-1-8 21:40:09 | 显示全部楼层
回复 4# WHY


    你的代码贴呢?怎么没了?
发表于 2016-1-8 21:44:22 | 显示全部楼层
回复 3# sweet惜缘


    论坛里常年问人要代码的也就你们几个,不需要用发现这个词。
发表于 2016-1-8 22:29:39 | 显示全部楼层
回复  WHY


    你的代码贴呢?怎么没了?
依山居 发表于 2016-1-8 21:40



    楼主恐怖的笑声那就是鬼上身的节奏,另我脚发抖、手发颤,于是,代码就没了~

评分

参与人数 1技术 +1 收起 理由
CrLf + 1 你以为代码删了我就不能加分了吗

查看全部评分

发表于 2016-1-8 22:49:29 | 显示全部楼层
可惜了  起码我们还能看看学用
 楼主| 发表于 2016-1-10 14:39:46 | 显示全部楼层
本帖最后由 pcl_test 于 2016-1-10 14:47 编辑
  1. @if (0)==(0) echo off
  2. cscript -nologo -e:jscript "%~0" < link.txt > out.txt
  3. pause & exit
  4. @end

  5. var fso = new ActiveXObject('Scripting.FileSystemObject');
  6. var arr1 = fso.OpenTextFile('DTI_one.txt').ReadAll().split('\r\n');
  7. var arr2 = fso.OpenTextFile('DTI_two.txt').ReadAll().split('\r\n');

  8. var map = [];
  9. for(var i=0; i<arr1.length; i++){
  10.     var drug_ID = arr1[i].replace(/(\S+).+/, '$1');
  11.     map[drug_ID] = arr1[i].replace(/\S+\s+(.+)/, '$1');
  12. }

  13. for(var i=0; i<arr2.length; i++){
  14.     var drug_ID = arr2[i].replace(/(\S+).+/, '$1');
  15.     map[drug_ID] += '\t' + arr2[i].replace(/\S+\s+(.+)/, '$1');
  16. }

  17. var arr = WSH.StdIn.ReadAll().split('\r\n');
  18. for(var i=0; i<arr.length; i++){
  19.     var m = arr[i].split(/\s+/);
  20.     if(map[m[0]]&&map[m[1]]) {
  21.         WSH.Echo(arr[i] + '\t' + map[m[0]] + '\t' + map[m[1]]);
  22.     }
  23. }
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-18 06:16 , Processed in 0.057536 second(s), 12 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表