过滤和转换表的方法

时间:2013-07-21 01:02:13

标签: j

我有一张桌子,想要对它进行过滤。用例示例包括:

4 6 8 6 5
8 6 6 6 9
3 2 3 1 9
2 7 0 9 5
7 7 9 7 4
8 7 4 2 1
1 0 4 3 9
3 2 7 4 4
0 3 7 5 9
6 3 2 8 2
  • 仅保留第二个元素等于2的行,即应返回
3 2 3 1 9
3 2 7 4 4
  • 仅保留第二个元素等于6的列,即应返回
6 8 6
6 6 6
2 3 1
7 0 9
7 9 7
7 4 2
0 4 3
2 7 4
3 7 5
3 2 8
  • 返回第一个和第二个元素之和等于9
  • 的行
2 7 0 9 5
6 3 2 8 2
  • 将表转换为新表,其中第一列是原始表中第一列和第二列的总和,第二列是第三列和第一列之间的差异,即
   10    4
   14   _2
    5    0
    9   _2
   14    2
   15   _4
    1    3
    5    4
    3    7
    9   _4
  • 将表转换为新表,其中第一行是原始表中第一行和第二行的总和,第二行是第三行和第一行之间的差异,即
  

12 12 14 12 14
     _1 _4 _5 _5 4

1 个答案:

答案 0 :(得分:1)

选择:{

选择行:{"1

测试:=

选择:#


每行的第二个元素

1 {"1 in
6 6 2 7 7 7 0 2 3 3

测试第二个元素是否等于2

2 = 1 {"1  in
0 0 1 0 0 0 0 1 0 0

当第二个元素等于2

时选择行
( 2 = 1 {"1  in) # in   NB. or  in #~ (2=1{"1 in) or (]#~ 2 = 1 {"1 ]) in
3 2 3 1 9
3 2 7 4 4

等效于第二个元素等于6

的行
( 6 = 1 { in) #"1 in
6 8 6
6 6 6
2 3 1
7 0 9
7 9 7
7 4 2
0 4 3
2 7 4
3 7 5
3 2 8

行的第一个和第二个元素的总和

(+/"1) 0 1 {"1 in
10 14 5 9 14 15 1 5 3 9

选择高于sum eq的行。 9

in #~ (9 = (+/"1) 0 1 {"1 in)
2 7 0 9 5
6 3 2 8 2

添加等

追加以前的结果:

((+/"1) 0 1 {"1 in) ,. (-/"1) 0 2 {"1 in
10 _4
14  2
 5  0
 9  2
14 _2
15  4
 1 _3
 5 _4
 3 _7
 9  4