perl 按列统计 计算A,B,C,D列中 数字2 在每列中出现的百分率.计算A,B,C,D列中 数字2 在每列中出现的百分率. Name A B C D sample1 1 2 3 4 sample2 1 2 3 4
perl 按列统计 计算A,B,C,D列中 数字2 在每列中出现的百分率.计算A,B,C,D列中 数字2 在每列中出现的百分率. Name A B C D sample1 1 2 3 4 sample2 1 2 3 4
perl 按列统计 计算A,B,C,D列中 数字2 在每列中出现的百分率.
计算A,B,C,D列中 数字2 在每列中出现的百分率.
Name
A
B
C
D
sample1
1
2
3
4
sample2
1
2
3
4
sample3
1
2
3
4
sample4
3
2
8
4
sample5
1
2
3
2
sample6
1
5
3
4
sample7
1
2
3
4
sample8
1
2
3
4
sample9
1
2
2
4
sample10
1
2
3
2
sample11
2
2
3
4
sample12
1
2
3
2
sample13
1
2
3
4
perl 按列统计 计算A,B,C,D列中 数字2 在每列中出现的百分率.计算A,B,C,D列中 数字2 在每列中出现的百分率. Name A B C D sample1 1 2 3 4 sample2 1 2 3 4
use strict;
# 设定
my $col_per_row = 5;
my $lookup_target = 2;
# my $lookup_target = "2"; # 如果你搜的是文字就用这句, 不要上面那句
#
my @fields;
foreach ( 1 .. $col_per_row ) {
my $field_name = <DATA>;
chomp $field_name;
push @fields, $field_name;
}
my @data = <DATA>;
chomp @data;
my (%hash, $total_rows) ;
while ( @data ) {
$total_rows++;
foreach my $col ( 0..$#fields ) {
$hash{$fields[$col]}[$total_rows] = shift @data;
}
}
foreach my $col_index ( 1.. $#fields ) {
print "target '$lookup_target' in col $fields[$col_index] = ";
my $sum;
foreach ( 1 .. $total_rows ) {
$sum ++ if $hash{$fields[$col_index]}[$_] == $lookup_target;
# $sum ++ if $hash{$fields[$col_index]}[$_] eq $lookup_target; # 如果你搜的是文字就用这句, 不要上面那句
}
my $percent;
$percent = sprintf "%.2f", ($sum / $total_rows * 100 );
print "$percent%$/";
}
__DATA__
Name
A
B
C
D
sample1
1
2
3
4
sample2
1
2
3
4
sample3
1
2
3
4
sample4
3
2
8
4
sample5
1
2
3
2
sample6
1
5
3
4
sample7
1
2
3
4
sample8
1
2
3
4
sample9
1
2
2
4
sample10
1
2
3
2
sample11
2
2
3
4
sample12
1
2
3
2
sample13
1
2
3
4