免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: cecial
打印 上一主题 下一主题

求方法,检查一组数据的单调性 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2014-10-31 15:24 |只看该作者
回复 5# 清泉一边

不是这样的,请看源数据
   

论坛徽章:
0
12 [报告]
发表于 2014-10-31 15:46 |只看该作者
所以根據你的例子

所以的單一相對的情況是沒有相互違背的囉

比方說同樣要看t_clk_r_q_r随rpb的单调性

我可以選2-4, 也可以選5-7,8-10,11-13,14-16,17-19,20-22,甚至是32-35(33,34兩行重複)

在你的例子裡面

這些都是完全相同的趨勢

如果有不相同的怎麼處裡呢?

论坛徽章:
0
13 [报告]
发表于 2014-10-31 16:00 |只看该作者
回复 12# afukada

是这样,我们看t_clk_r_q_r 随rpb的单调性,当然要在其他key的固定的情况下,列出来所有rpb的取值。

单出例子看,2-4,5-7都是对的。

我们要一个一个检查,一个一个报告。

我想你的意思是对所有的数据而言,t_clk_r_q_r 随rpb的单调性是什么。但这不是我要的。(很有可能和你说的一样,有些增,有些减)

我要的是在其他key固定的时候,看t_clk_r_q_r 随rpb的单调性。而不是对所有数据而言。

结果看起来就应该是这样:在其他key取。。。。的时候,t_clk_r_q_r 随rpb是单调增(减),或者是没有单调性


   

论坛徽章:
5
丑牛
日期:2014-01-21 08:26:26卯兔
日期:2014-03-11 06:37:43天秤座
日期:2014-03-25 08:52:52寅虎
日期:2014-04-19 11:39:48午马
日期:2014-08-06 03:56:58
14 [报告]
发表于 2014-10-31 17:53 |只看该作者
是酱? 你的意思 ~ {:2_168:}

__DATA__
  A B C value
qq        3        2        1        0.3
qq        5        2        2        0.4
qq        3        2        1        0.2
qq        2        2        2        0.2
qq        6        2        1        0.1
qq        7        2        2        0.5
qq        8        2        1        0.2
qq        9        2        1        0.1
qq        9        2        3        0.7
qq        10        2        3        0.5
qq        11        2        3        0.3

对 A 的单调性

A       3 3 6 8 9
value   0.2 0.3 0.1 0.2 0.1
trend 没有单调性

A       2 5 7
value   0.2 0.4 0.5
trend 单调增

A       9 10 11
value   0.7 0.5 0.3
trend 单调减



3 ~ 0.3
5 ~ 0.2
3 ~ 0.4

这样有 2组 不一样的结果 ??

1: 没有单调性 3 3 5 => 0.3 0.4 0.2
2: 单调减    3 3 5 => 0.4 0.3 0.2

回复 11# cecial


   

论坛徽章:
0
15 [报告]
发表于 2014-10-31 18:08 |只看该作者
本帖最后由 cecial 于 2014-10-31 18:09 编辑

回复 14# pitonas

如果key都一样,value是不会有两个值的。

其他都对的


   

论坛徽章:
5
丑牛
日期:2014-01-21 08:26:26卯兔
日期:2014-03-11 06:37:43天秤座
日期:2014-03-25 08:52:52寅虎
日期:2014-04-19 11:39:48午马
日期:2014-08-06 03:56:58
16 [报告]
发表于 2014-11-01 12:03 |只看该作者
本帖最后由 pitonas 于 2014-11-01 06:13 编辑

是酱? {:2_168:}
  • 忽略 key 的值是字符的单调性检查(vt 和 corner列)
  • 忽略 t_clk_r_q_r
  • 没检查重复行



        beta        gamma        vt        corner
matter        2        1        x        y
alpha        3        3        6        8        9
value        0.2        0.3        0.1        0.2        0.1
trend        没有单调性

        beta        gamma        vt        corner
matter        2        2        x        z
alpha        2        5        7
value        0.2        0.4        0.5
trend        单调增

        beta        gamma        vt        corner
matter        2        3        x        y
alpha        9        10        11
value        0.7        0.5        0.3
trend        单调减

        alpha        gamma        vt        corner
matter        5        2        x        z
beta        2
value        0.4
trend        只有这一个

......


        alpha        gamma        vt        corner
matter        3        1        x        y
beta        2        2
value        0.2        0.3
trend        单调增
  1. #!/usr/bin/perl

  2. #@ARGV = 'TEST.txt';  # txt not xlsl
  3. my $title = <DATA>;
  4. my @title = split /\t/, $title;
  5. my $lkey  = @title - 4;           # 忽略 vt 和 corner 列
  6. $title[0] = '';
  7. my %h;

  8. while (<DATA>) {
  9.     my @a = split;
  10.     my ( $first, $value, @last ) = @a[ 0, -1, -3, -2 ];

  11.     for my $i ( 1 .. $lkey ) {
  12.         my $key = $a[$i];

  13.         # 忽略 key 的值是字符的单调性检查(vt 和 corner列)
  14.         # 忽略 t_clk_r_q_r
  15.         
  16.         my @other = @a[ 1 .. $i - 1, ( $i + 1 ) .. $lkey ];
  17.         my $other = join '|', @other;

  18.         push @{ $h{$i}{$other}{X} }, $key;
  19.         push @{ $h{$i}{$other}{Y} }, $value;
  20.         $h{$i}{$other}{Z} ||= [ $first, @other, @last ];
  21.     }
  22. }

  23. for my $i ( 1 .. $lkey ) {
  24.     my $kv   = $title[$i];
  25.     my $keys = join "\t", @title[ 0, 1 .. $i - 1, ( $i + 1 ) .. $#title - 1 ];

  26.     while ( my ( undef, $v ) = each %{ $h{$i} } ) {
  27.         my @X = @{ $v->{X} };
  28.         my @Y = @{ $v->{Y} };
  29.         my @Z = @{ $v->{Z} };

  30.         # 如果 key 都一样,value 是不会有两个值的。then
  31.         # my @index = sort { $X[$a] <=> $X[$b] } 0 .. $#X;
  32.         # else use this line
  33.         my @index = sort { $X[$a] <=> $X[$b] || $Y[$a] <=> $Y[$b] } 0 .. $#X;

  34.         @X = @X[@index];
  35.         @Y = @Y[@index];

  36.         my $Y0 = join '|', @Y;
  37.         my $Y  = join '|', sort { $a <=> $b } @Y;

  38.         print
  39.           $keys, "\n",
  40.           join( "\t", @Z ), "\n",
  41.           $kv, "\t", join( "\t", @X ), "\n",
  42.           'value', "\t", join( "\t", @Y ), "\n",
  43.           'trend', "\t", (

  44.             # if data 有 @X only 1 element: then add this line
  45.             @X == 1 ? '只有这一个' :  # 可以注解此行 if all @X >= 2
  46.             
  47.             $Y0 eq $Y
  48.             ? '单调增'
  49.             : do {
  50.                 $Y = join '|', sort { $b <=> $a } @Y;
  51.                 $Y0 eq $Y ? '单调减' : '没有单调性';
  52.               }
  53.           ),
  54.           "\n", "\n";
  55.     }
  56. }

  57. __DATA__
  58.         alpha        beta        gamma        vt        corner        value
  59. matter        3        2        1        x        y        0.3
  60. matter        5        2        2        x        z        0.4
  61. matter        3        2        1        x        b        0.2
  62. matter        2        2        2        b        a        0.2
  63. matter        6        2        1        x        c        0.1
  64. matter        7        2        2        b        n        0.5
  65. matter        8        2        1        k        m        0.2
  66. matter        9        2        1        u        o        0.1
  67. matter        9        2        3        x        y        0.7
  68. matter        10        2        3        x        y        0.5
  69. matter        11        2        3        x        y        0.3
复制代码
回复 15# cecial


   
walklan 该用户已被删除
17 [报告]
发表于 2014-11-03 10:32 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
18 [报告]
发表于 2014-11-14 11:28 |只看该作者
回复 16# pitonas

多谢,多谢,这段时间在忙其他的,没及时回复。

除了一点,不考虑非数字key的单调性不是说在建立hash的时候就可以忽略。

基本上,这个思路基本可行。




   

论坛徽章:
0
19 [报告]
发表于 2014-11-14 11:35 |只看该作者
回复 17# walklan

多谢,多谢。

不过在建立%DATA的时候,你关键字用了key的值,存在一个问题是不同的key有相同的值,所以会造成冲突。



   
walklan 该用户已被删除
20 [报告]
发表于 2014-11-14 14:12 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP