如何删除数据文件中每组列的第一个子集?

扎拉

我有一个超过40000列的数据文件。在标题中,每列的名称均以C1,c2,...,cn开头,每组c具有一个或多个子集,例如c1。有2个子集。我需要删除每组c的第一列(子集)。例如,如果输入看起来像:

输入:

    c1.20022  c1.31012  c2.44444  c2.87634  c2.22233 c3.00444  c3.44444 
     1    1         0         1         0         0         0         1     
     2    0         1         0         0         1         0         1     
     3    0         1         0         0         1         1         0     
     4    1         0         1         0         0         1         0     
     5    1         0         1         0         0         1         0     
     6    1         0         1         0         0         1         0     

我需要的输出是这样的:

    c1.31012  c2.87634  c2.22233  c3.44444 
     1    0         0         0         1     
     2    1         0         1         1     
     3    1         0         1         0     
     4    0         0         0         0     
     5    0         0         0         0     
     6    0         0         0         0     
     7    1         0         0         0     

有什么建议吗?

更新:如果行中的数字之间没有空格(这是我的数据集的实际情况),那我该怎么办?我的意思是我的真实数据如下所示:输入:

c1.20022  c1.31012  c2.44444  c2.87634  c2.22233 c3.00444  c3.44444 
         1    1010001     
         2    0100101     
         3    0100110     
         4    1010010     
         5    1010010     
         6    1010010     

并输出:

c1.31012  c2.87634  c2.22233  c3.44444 
         1    0001     
         2    1011     
         3    1010     
         4    0000     
         5    0000     
         6    0000     
         7    1000     
疾病

Perl解决方案:首先读取标题行,使用正则表达式在点之前提取列名称,并保留要保留的列号列表。然后,它使用索引从标题和其余行仅打印所需的列。

#!/usr/bin/perl
use warnings;
use strict;
use feature qw{ say };

my @header = split ' ', <>;
my $last = q();
my @keep;
for my $i (0 .. $#header) {
    my ($prefix) = $header[$i] =~ /(.*)\./;
    if ($prefix eq $last) {
        push @keep, $i + 1;
    }
    $last = $prefix;
}
unshift @header, q();
say join "\t", @header[@keep];

while (<>) {
    my @columns = split;
    say join "\t", @columns[@keep];
}

更新:

#!/usr/bin/perl
use warnings;
use strict;
use feature qw{ say };

my @header = split ' ', <>;
my $last = q();
my @keep;
for my $i (0 .. $#header) {
    my ($prefix) = $header[$i] =~ /(.*)\./;
    if ($prefix eq $last) {
        push @keep, $i;
    }
    $last = $prefix;
}
say join "\t", @header[@keep];

while (<>) {
    my ($line_number, $all_digits) = split;
    my @digits = split //, $all_digits;
    say join "\t", $line_number, join q(), @digits[@keep];
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何获取和删除数据结构中的第一个元素?

来自分类Dev

删除数组中的第一个零

来自分类Dev

删除数据框中数据分区中的第一个值,重新索引并创建一个新列

来自分类Dev

如何删除数组中的第一个元素?

来自分类Dev

Powershell:如何删除数组控制台输出中的第一个空行?

来自分类Dev

对第一个子集类别做减法

来自分类Dev

删除数组中的第一个/最后一个值

来自分类Dev

删除数据框中从第一个匹配到最后一行的所有行

来自分类Dev

如何删除数据文件夹中的文件?

来自分类Dev

如何删除列中的第一个单词和最后一个单词?

来自分类Dev

如何在python scrapy中删除数组中项目的第一个字符

来自分类Dev

删除数据输出的第一个字符

来自分类Dev

删除第一个子项的边框

来自分类Dev

从文件中删除第一个多行注释

来自分类Dev

从MKV文件中删除第一个音轨

来自分类Dev

如何获得每个子目录中与文件扩展名列表匹配的第一个文件?

来自分类Dev

删除数据框中的最后一个值,将行绑定到同一数据框,第一个列的位置为零,重复100次

来自分类Dev

如果从 Pandas 数据框列值中删除一个句子,则删除第一个单词

来自分类Dev

如何从CSV文件的每一行中删除第一列中的第一个字符?

来自分类Dev

如何在Python中从文本文件中删除第一个空格?

来自分类Dev

从大文件中删除重复的第一个字段/列的行

来自分类Dev

如何从 NSString 中删除第一个空格?

来自分类Dev

如何从数据框中删除多个标头并仅保留第一个 python

来自分类Dev

如何使用sed仅删除文件中第一个出现的行

来自分类Dev

如何仅在模式的第一个匹配之后删除日志文件中的n行

来自分类Dev

如何在oozie中使用fs动作删除目录中的第一个文件

来自分类Dev

如何从文件夹名称中删除第一个单词?

来自分类Dev

如何使用sed删除特定列中的第一个字符

来自分类Dev

如何在PowerShell中的第一个特殊字符实例后删除数组中每一行中的剩余文本

Related 相关文章

  1. 1

    如何获取和删除数据结构中的第一个元素?

  2. 2

    删除数组中的第一个零

  3. 3

    删除数据框中数据分区中的第一个值,重新索引并创建一个新列

  4. 4

    如何删除数组中的第一个元素?

  5. 5

    Powershell:如何删除数组控制台输出中的第一个空行?

  6. 6

    对第一个子集类别做减法

  7. 7

    删除数组中的第一个/最后一个值

  8. 8

    删除数据框中从第一个匹配到最后一行的所有行

  9. 9

    如何删除数据文件夹中的文件?

  10. 10

    如何删除列中的第一个单词和最后一个单词?

  11. 11

    如何在python scrapy中删除数组中项目的第一个字符

  12. 12

    删除数据输出的第一个字符

  13. 13

    删除第一个子项的边框

  14. 14

    从文件中删除第一个多行注释

  15. 15

    从MKV文件中删除第一个音轨

  16. 16

    如何获得每个子目录中与文件扩展名列表匹配的第一个文件?

  17. 17

    删除数据框中的最后一个值,将行绑定到同一数据框,第一个列的位置为零,重复100次

  18. 18

    如果从 Pandas 数据框列值中删除一个句子,则删除第一个单词

  19. 19

    如何从CSV文件的每一行中删除第一列中的第一个字符?

  20. 20

    如何在Python中从文本文件中删除第一个空格?

  21. 21

    从大文件中删除重复的第一个字段/列的行

  22. 22

    如何从 NSString 中删除第一个空格?

  23. 23

    如何从数据框中删除多个标头并仅保留第一个 python

  24. 24

    如何使用sed仅删除文件中第一个出现的行

  25. 25

    如何仅在模式的第一个匹配之后删除日志文件中的n行

  26. 26

    如何在oozie中使用fs动作删除目录中的第一个文件

  27. 27

    如何从文件夹名称中删除第一个单词?

  28. 28

    如何使用sed删除特定列中的第一个字符

  29. 29

    如何在PowerShell中的第一个特殊字符实例后删除数组中每一行中的剩余文本

热门标签

归档