免费注册 查看新帖 |

Chinaunix

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

重复次数的统计 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-08-29 23:30 |只看该作者 |倒序浏览
大侠们,小弟现在有一个统计问题想请教。


假如现在有一组数据data1,其中的数据有重复,现在要根据data2中的数据来统计重复次数,

data1的内容如下:
1111
111
22
1111
113
23456
6784
6784
6784
6784
1111
1111
1111
23456
113
09002
09001
09002
003900
003900
2245
2245
123456


data2的内容如下:
003900
003901
003902
09000
09001
09002
111
1111
113
114
123456
22
223
2245
23456
6784
67849


根据data2来统计data1中每个数据重复的次数,结果如下:

003900:2
003901:0
003092:0
09000:0
09001:1
09002:2
111:1
1111:5
113:2
114:0
123456:1
22:1
223:0
2245:2
23456:2
6784:4
67849:0

想请各位帮帮忙,怎么解决这个问题呢?

论坛徽章:
8
技术图书徽章
日期:2013-08-22 11:21:28未羊
日期:2015-01-19 22:22:25巳蛇
日期:2014-08-11 16:53:08子鼠
日期:2014-05-29 09:04:44摩羯座
日期:2014-04-11 14:15:07丑牛
日期:2014-01-24 12:41:28金牛座
日期:2013-11-21 17:38:28射手座
日期:2015-01-21 08:50:32
2 [报告]
发表于 2014-08-30 08:35 |只看该作者
无非就是把第一个文件的每一行作为key建立哈希,value是该行的重复数,然后去匹配第二行,输出每一行的value或者0....

论坛徽章:
0
3 [报告]
发表于 2014-08-30 10:43 |只看该作者
  1. #!/usr/bin/perl

  2. use 5.010;
  3. use strict;
  4. use warnings;

  5. my %hash;
  6. while(<DATA>){
  7.         chomp;
  8.         $hash{$_}++;
  9. }

  10. foreach my $x (sort keys %hash) {
  11.         say "$x~~~$hash{$x}";
  12. }
  13. __DATA__
  14. 1111
  15. 111
  16. 22
  17. 1111
  18. 113
  19. 23456
  20. 6784
  21. 6784
  22. 6784
  23. 6784
  24. 1111
  25. 1111
  26. 1111
  27. 23456
  28. 113
  29. 09002
  30. 09001
  31. 09002
  32. 003900
  33. 003900
  34. 2245
  35. 2245
  36. 123456
复制代码

论坛徽章:
0
4 [报告]
发表于 2014-08-30 10:45 |只看该作者
回复 3# ghoull


   

论坛徽章:
0
5 [报告]
发表于 2014-08-30 15:42 |只看该作者
回复 3# ghoull
哦,原来是这样啊,受教了……谢谢啊……

   

论坛徽章:
0
6 [报告]
发表于 2014-08-30 15:43 |只看该作者
回复 2# huang6894
恩,谢谢大侠的提示,刚开始学这个……我还得好好努力呀
   

论坛徽章:
32
处女座
日期:2013-11-20 23:41:20双子座
日期:2014-06-11 17:20:43戌狗
日期:2014-06-16 11:05:00处女座
日期:2014-07-22 17:30:47狮子座
日期:2014-07-28 15:38:17金牛座
日期:2014-08-05 16:34:01亥猪
日期:2014-08-18 13:34:25白羊座
日期:2014-09-02 15:03:55金牛座
日期:2014-11-10 10:23:58处女座
日期:2014-12-02 09:17:52程序设计版块每日发帖之星
日期:2015-06-16 22:20:002015亚冠之塔什干火车头
日期:2015-06-20 23:28:22
7 [报告]
发表于 2014-08-31 12:51 |只看该作者
回复 3# ghoull

貌似楼主要求把不存在的显示为0
   

论坛徽章:
32
处女座
日期:2013-11-20 23:41:20双子座
日期:2014-06-11 17:20:43戌狗
日期:2014-06-16 11:05:00处女座
日期:2014-07-22 17:30:47狮子座
日期:2014-07-28 15:38:17金牛座
日期:2014-08-05 16:34:01亥猪
日期:2014-08-18 13:34:25白羊座
日期:2014-09-02 15:03:55金牛座
日期:2014-11-10 10:23:58处女座
日期:2014-12-02 09:17:52程序设计版块每日发帖之星
日期:2015-06-16 22:20:002015亚冠之塔什干火车头
日期:2015-06-20 23:28:22
8 [报告]
发表于 2014-08-31 12:59 |只看该作者
  1. #!perl
  2. use warnings;
  3. use strict;
  4. my %h;
  5. open(F1, 'a') or die;
  6. chomp and $h{$_}++ while <F1>;
  7. close(F1);
  8. open(F2, 'b') or die;
  9. while(<F2>){
  10.         chomp;
  11.         printf "%s:%d\n", $_, $h{$_} || 0;
  12. }
  13. close(F2);
复制代码

论坛徽章:
3
CU十二周年纪念徽章
日期:2013-10-24 15:41:34子鼠
日期:2013-12-14 14:57:19射手座
日期:2014-04-25 21:23:23
9 [报告]
发表于 2014-08-31 14:50 |只看该作者
学习了~~~~~

论坛徽章:
0
10 [报告]
发表于 2014-09-01 17:10 |只看该作者
回复 8# yestreenstars
{:2_172:} 大侠看的好细致啊,对啊,我确实是还要把没有的显示为0……多谢

   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP