![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
No.1ベストアンサー
- 回答日時:
それほど プログラムができる人間ではないですが。
。。このような ロジックではいかがでしょうか?
連想配列hashを 2種類活用し、
1つ目のhash
カラム1の種類ごとに カラム2を足していく。
(hash{カラム1}に どんどん カラム1が同じもののカラム2の値を足していく。)
hash{カラム1}=hash{カラム1}+カラム2
2つ目のhash2
カラム1の種類ごとに、各カラム1のおなじものが 何個あるか カウントしていく。
(hash2{カラム1}に カラム1が同じものをカウントしていく。)
hash2{カラム1}=hash2{カラム1}+1
平均値は
hash{カラム1}/hash2{カラム1}で 求まると思います。
この回答へのお礼
お礼日時:2011/09/14 02:12
早速の回答ありがとうございます。
hashにもあまり慣れていないプログラミング初心者でなかなか理解するのが難しい状態です。もしよろしければもう少し具体的な構成を教えていただけないでしょうか?
No.3
- 回答日時:
インデントの都合上、全角スペース使ってるので置換して下さい。
use strict;
use warnings;
# データのぶちこみ場所(2次ハッシュ)
my %data;
# CSVデータはスクリプト中に書けるので、今回はそれを使います
while (<DATA>) {
chomp $_;
my @cols = split(',', $_);
# 各カラムごとの合計(sum)、個数(cnt)
$data{$cols[0]}{sum} += $cols[1];
$data{$cols[0]}{cnt}++;
}
foreach my $col (sort keys %data) {
# 適当に出力
print "Colmns $col : Avg = " . $data{$col}{sum} / $data{$col}{cnt} . "\n";
}
__DATA__
1,123.93
1,322.32
1,232.21
1,124.32
1,234.12
2,123.43
2,12.34
No.2
- 回答日時:
あまりプログラムが得意でないので、効率よいきれいなプログラムでないかもしれませんが、
かきのようなもので どうでしょうか?
open(IN,ファイル1);
while(<IN>){
$line = $_;
chomp $line;
@array = split(/\t/,$line);
$id1 = $array[0];
$score = $array[1];
if(exists $hash{$id1}){
$hash{$id1}=$hash{$id1}+$score;
$hash2{$id1}=$hash2{$id1}+1;
} else {
$hash{$id1}=$score;
$hash2{$id1}=1;
}
}
close(IN);
foreach(sort keys %hash)
{
my $key=$_;
my $value=$hash{$_};
my $value2=int($value/$hash2{$_}); 商だけを採用するのであれば intを利用
print $key.' -> '.$value2."\n"
}
とすると
1 -> XXX とかでてくるのではないでしょうか?
この回答へのお礼
お礼日時:2011/09/14 15:34
詳細にプログラムまで書いていただきありがとうございます。
おかげさまでデータ処理を行うことができました。
ありがとうございました!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- IT・エンジニアリング ドメイン駆動設計の値オブジェクトについて質問 1 2023/05/13 02:50
- Oracle sql(oracle)で質問です。 テーブルAのカラム名、日付(yyyymmdd)の値を テーブルB 2 2023/01/06 10:31
- その他(プログラミング・Web制作) google formsで回答者をスプレッドシートに記載する方法 1 2023/06/23 11:22
- PostgreSQL 列が存在しないと言われる 2 2023/02/10 18:33
- 統計学 t値の計算方法 1 2022/11/29 18:37
- MySQL SQLについて教えて下さい。 SELECT分で、あるカラムにある日付の 半年先のデータを取って来たい 3 2022/12/07 22:28
- その他(データベース) カラム上の重複を削除するクエリを教えてください 3 2022/04/12 14:11
- 統計学 確率統計の問題です。 3 2022/04/07 04:39
- PHP Postgresの特定のカラムからスペースを取る方法 1 2023/02/22 13:18
- 物理学 電気磁気測定の整流形電圧計の問題についてです。 写真の問題についてで、正弦波での実効値Ve、最大値V 2 2023/02/16 11:12
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
perlでの平均計算について
-
UWSCの終了の仕方
-
VBのReturnの使い方
-
GIFアニメをループさせたくない
-
ボタンが押された時にループか...
-
ハッシュ検索はなぜ速い
-
VBA for文が止まらない
-
C言語でファクト関数を使わずに...
-
英語でのシャープとコメの呼び...
-
python質問
-
文字列を変数名として扱う方法
-
DoEventsが必要な理由について
-
ListBox 複数選択 で オートフ...
-
DataGridViewに配列の値を表示...
-
VBAのautofilter、criteriaの配...
-
ループからの抜け出し方
-
イベントの発生を待つ
-
参照配列の要素数の求め方は?
-
UWSCに制限時間を付けたいです
-
for文とforeach文について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
双方向リスト(?)
-
HTML::TemplateのTMPL_LOOPにつ...
-
if($key){ ($key eq 'aaa') ||...
-
連番ごとに印をつける
-
変数に何も入ってないとき
-
ハッシュを無名変数へ代入して...
-
Perlのリファレンスについて
-
VB6の公式リファレンスはありま...
-
DBIを使用してデータを連想配列...
-
bashのリファレンス的なWEB...
-
ハッシュの配列を作ることは可...
-
Yahooの掲示板のような掲示板を...
-
重複する値を表示しない
-
Perl構造体、出力方法
-
ファイルからデータを読み込ん...
-
クラスの作り方
-
構造体の配列の指定方法
-
サブルーチンの返値に配列のハ...
-
C言語について。
-
Perlで縦横変換のような事をし...
おすすめ情報