首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >删除具有相同值的列

删除具有相同值的列
EN

Stack Overflow用户
提问于 2015-02-10 19:04:46
回答 1查看 214关注 0票数 0

我有一个庞大的数据集,我想删除值为-9的列。我有20行和百万列。

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

感谢你的帮助,

谢谢!

sample1 -9 3 -9 0-2 -9 -9 -9 1 -9

sample2 -9 -9 0 -9 0 2 -9 -9 -9 -9

sample3 -9 -9 -9 -9 -9 2 3 1 -9 -9 -9

sample4 -9 -9 -9 -9 2 -9 1 -9 -9 -9

输出;

sample1 3 -9 0 -9 2 -9 -9 1

sample2 -9 0 -9 0 2 -9 -9 -9

sample3 -9 -9 -9 -9 2 3 1 -9

sample4 -9 -9 -9 2 -9 1 -9

我尝试用perl删除它。

EN

回答 1

Stack Overflow用户

发布于 2015-02-11 02:32:49

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

代码语言:javascript
复制
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 \f25 7 4 6 -9 \f25 4

  • -9\f6输出:

%1%2%0

-9 2 5 3

2 3 3 -9

7 4 6 4

步骤:

  1. 转置矩阵(然后每列将成为行)
  2. 然后排除已获得所有-9值的行
  3. 再次转置矩阵

参考:link

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28430074

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档