一連の数値を含むテキストファイルを読み込んでパーセンタイルに対応する数値を計算して出力するperlコードを作成しようとしています。私は他の統計モジュールにアクセスすることができませんので、純粋なperlコーディングに固執したいと思います。前もって感謝します!Perl:配列を読み込み、対応するパーセンタイルを計算する
入力テキストファイルは次のようになります。
197
98
251
82
51
272
154
167
38
280
157
212
188
88
40
229
228
125
292
235
67
70
127
26
279
.... (and so on)
私が持っているコードは次のとおりです。
#!/usr/bin/perl
use strict;
use warnings;
my @data;
open (my $fh, "<", "testing2.txt")
or die "Cannot open: $!\n";
while (<$fh>){
push @data, $_;
}
close $fh;
my %count;
foreach my $datum (@data) {
++$count{$datum};
}
my %percentile;
my $total = 0;
foreach my $datum (sort { $a <=> $b } keys %count) {
$total += $count{$datum};
$percentile{$datum} = $total/@data;
# percentile subject to change
if ($percentile{$datum} <= 0.10) {
print "$datum : $percentile{$datum}\n\n";
}
}
マイ所望の出力:
フォーマットはから番号NUMBERである2 : 0.01
3 : 0.01333
4 : 0.01666
6 : 0.02
8 : 0.03
10 : 0.037
12 : 0.04
14 : 0.05
15 : 0.05333
16 : 0.06
18 : 0.06333
21 : 0.07333
22 : 0.08
25 : 0.09
26 : 0.09666
リスト:#対応するパーセンタイル
あなたのスクリプトの出力は望ましいものとどのように異なっていますか? – choroba
いくつかの奇妙な理由から、左側に何も表示されず(リストの番号)、それに対応する百分位数が表示されます – Kaiser
オフトピック: 'while'-loopを' my @data = <$fh> ' – red0ct