【问题标题】:remove the columns with the same value删除具有相同值的列
【发布时间】:2015-02-10 11:04:45
【问题描述】:

我有一个庞大的数据集,我想删除具有相同值 -9 的列。我有 20 行和 100 万列。

我想删除第 1、9、11 列(它们都与 -9 的值相同),这只是我数据集的一小部分。我无法用我的完整数据集计算哪些列全都为 -9。

感谢您的帮助,

谢谢!

样本1 -9 3 -9 0 -9 2 -9 -9 -9 1 -9

样本2 -9 -9 0 -9 0 2 -9 -9 -9 -9 -9

样本3 -9 -9 -9 -9 -9 2 3 1 -9 -9 -9

样本4 -9 -9 -9 -9 -9 2 -9 1 -9 -9 -9

输出;

样本1 3 -9 0 -9 2 -9 -9 1

样本2 -9 0 -9 0 2 -9 -9 -9

样本3 -9 -9 -9 -9 2 3 1 -9

样本4 -9 -9 -9 -9 2 -9 1 -9

我试图用 perl 删除它。

【问题讨论】:

标签: unix awk sed


【解决方案1】:

你可以试试下面的 awk 脚本。

cat a.txt | awk '{
                  for (Col = 1; Col <= NF; Col++) { a[NR, Col] = $Col } 
                 }         
                 END {    
                   for (Col = 1; Col <= NF ; Col++) { 
                      j=0;  
                      for( Row = 1 ; Row<= NR; Row++) 
                      { 
                         if (a[Row,Col] != -9 ) 
                          { j=1 } 
                      } 
                      if( j == 0 ) { continue;} 
                      for(Row=1; Row<= NR; Row++){ 
                         printf a[Row,Col] (Row==NR ? RS : FS)  
                      } 
                    } 
                }' | awk '{
                  for (Col = 1; Col <= NF; Col++) { a[NR, Col] = $Col } 
                 }         
                 END {    
                   for (Col = 1; Col <= NF ; Col++) { 
                      for(Row=1; Row<= NR; Row++){ 
                         printf a[Row,Col] (Row==NR ? RS : FS)  
                      } 
                    } 
                }'


测试:

  • 输入:
    -9 1 2 2 -9 0
    -9 -9 2 5 -9 3
    -9 2 3 3 -9 -9
    -9 7 4 6 -9 4
  • 输出:
    1 2 2 0
    -9 2 5 3
    2 3 3 -9
    7 4 6 4


步骤:

  1. 转置矩阵(那么每一列都会变成行)
  2. 然后排除所有-9个值的行
  3. 再次转置矩阵

参考:link

【讨论】:

  • 非常感谢。它适用于小数据,但对于我的完整数据集它不起作用!
  • 我的文件太大,不能使用 cat。我可以用什么代替猫?
  • 我同意,上述方法对于非常大的文件效率不高。我认为我们需要在脚本/程序中扫描文件两次以处理大数据。
猜你喜欢
  • 1970-01-01
  • 2022-12-17
  • 2017-11-07
  • 1970-01-01
  • 1970-01-01
  • 2022-08-11
  • 1970-01-01
  • 2022-12-16
  • 1970-01-01
相关资源
最近更新 更多