免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1618 | 回复: 7
打印 上一主题 下一主题

请教这个功能perl如何实现? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-05-21 15:09 |只看该作者 |倒序浏览
本帖最后由 bioinfor 于 2012-05-21 15:10 编辑

有A,B,C三列数据,B和C列行数相同,A比B列行数有可能多也有可能少,现打算实现如果A与B相同则输出相应的A和C,而没有对应值的则输出为none,如下例:
A列             B列             C列
BOOK          APPLE             -6
BEE             BLUE             -20
BOOK           GOOD            -4
APPLE          BOOK            -9
YES             YES               -5
                   NO                -54

结果应该输出
BOOK          -9
BEE             none
BOOK          -9
APPLE          -6
YES             -5
                          

附件是真实数据。

Book1.zip

19.24 KB, 下载次数: 6

数据

论坛徽章:
0
2 [报告]
发表于 2012-05-21 16:14 |只看该作者
本帖最后由 kk861123 于 2012-05-21 16:15 编辑

回复 1# bioinfor
  1. #!/usr/bin/perl
  2. use strict;
  3. use warnings;
  4. use Data::Dumper;

  5. my (@index,%map_of);
  6. while (<DATA>) {
  7.     chomp;
  8.     if (/^([^\t]*)\t([^\t]*)\t([^\t]*)$/) {
  9.         push @index,$1 if $1;
  10.         $map_of{$2} = $3;
  11.     }
  12. }

  13. for (@index) {
  14.     my $line = "$_\t";
  15.     $line   .= exists $map_of{$_}
  16.              ? $map_of{$_}
  17.              : "none";
  18.     print $line,"\n";
  19. }

  20. __DATA__
  21. BOOK        APPLE        -6
  22. BEE        BLUE        -20
  23. BOOK        GOOD        -4
  24. APPLE        BOOK        -9
  25. YES        YES        -5
  26.         NO        -54
复制代码

论坛徽章:
0
3 [报告]
发表于 2012-05-21 16:46 |只看该作者
回复 1# bioinfor

我写了个,可以实现你说的功能,见附件。有问题请回复哦~ SearchData.zip (18.96 KB, 下载次数: 18)


   

论坛徽章:
0
4 [报告]
发表于 2012-05-21 16:57 |只看该作者
本帖最后由 perlshell 于 2012-05-21 16:57 编辑
kk861123 发表于 2012-05-21 16:14
回复 1# bioinfor



HI, 我权限不够没法回你私信,我加你的QQ了,关于Perl shell, 请加QQ!

论坛徽章:
0
5 [报告]
发表于 2012-05-24 22:37 |只看该作者
回复 2# kk861123

这个程序我运行不了不知怎么回事,没有安装那个模块吗?


   

论坛徽章:
0
6 [报告]
发表于 2012-05-24 22:38 |只看该作者
本帖最后由 bioinfor 于 2012-05-24 23:10 编辑

回复 3# xfsunny


程序我试了,A列数据量少的时候没有问题,但数据量大就有问题。

如结果中
JUND    -45.15120897
其余是
JUND   none

正确应该都是JUND    -45.15120897




数据量大的文件见附件.
   

Book2.zip

23.29 KB, 下载次数: 6

数据

论坛徽章:
0
7 [报告]
发表于 2012-05-25 02:07 |只看该作者
回复 6# bioinfor


    哥们,做bioinformatics还是需要认真学点Perl。这个问题不难的,不妨自己试试

论坛徽章:
0
8 [报告]
发表于 2012-05-26 00:15 |只看该作者
bioinfor 发表于 2012-05-24 22:37
回复 2# kk861123

这个程序我运行不了不知怎么回事,没有安装那个模块吗?
那你把模块去了吧,调试时候用的
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP