このディレクトリの索引
http://anago.2ch.net/test/read.cgi/software/1348064199/191
#  aaa,b 
#  0.1,44 
#  0.2,23.1 
#  0.5,777.4 
#  0.6,-10 
#  0.7,999 
#  0.8,-496.3 
#  0.9,37 
#  1.1,0 
#  1.2,865 
#  1.3,-5 
#  1.4,-5955 
#  1.6,0 
#  1.8,594.3 
#  2.1,-459 
#   
#  上記のようなcsvファイルがあります。 
#  aaaの値がx刻みのbの平均値を出したいのです。 
#   
#  たとえばxを0.5とした場合、以下のように平均値を自動的に。
#  (xの値は自由に変更できるものでお願いします) 
#   
#  aaaが0超0.5以下(0.1と0.2と0.5)のbの平均値((44+23.1+777.4)/3=281.5) 
#  aaaが0.5超1以下(0.6と0.7と0.8と0.9)のbの平均値(132.425) 
#  aaaが1超1.5以下(1.1と1.2と1.3と1.4)のbの平均値(-1273.75) 
#  aaaが1.5超2以下(1.6と1.8)のbの平均値(297.15) 
#  aaaが2超2.5以下(2.1)の平均値(-459)
# 
# 

'aaa,b
0.1,44
0.2,23.1
0.5,777.4
0.6,-10
0.7,999
0.8,-496.3
0.9,37
1.1,0
1.2,865
1.3,-5
1.4,-5955
1.6,0
1.8,594.3
2.1,-459

上記のようなcsvファイルがあります。
aaaの値がx刻みのbの平均値を出したいのです。

たとえばxを0.5とした場合、以下のように平均値を自動的に。
(xの値は自由に変更できるものでお願いします)

aaaが0超0.5以下(0.1と0.2と0.5)のbの平均値((44+23.1+777.4)/3=281.5)
aaaが0.5超1以下(0.6と0.7と0.8と0.9)のbの平均値(132.425)
aaaが1超1.5以下(1.1と1.2と1.3と1.4)のbの平均値(-1273.75)
aaaが1.5超2以下(1.6と1.8)のbの平均値(297.15)
aaaが2超2.5以下(2.1)の平均値(-459)'(CSVFILE,_x,_平均値ならび) :-
        get_split_lines(CSVFILE,[','],LL),
        最大値(LL,[_最大値_1,_]),
        刻みながら平均値を取る(0,_最大値,_n,_平均値ならび).

刻みながら平均を取る(N,_最大値,_n,_,[]) :-
        N > _最大値,!.
刻みながら平均を取る(N,_最大値,_n,LL,[[N,N2,_平均]|R]) :-
        N2 is N + _n,
        findavg(_bbb,(
                    刻み範囲の値を選択する(N,N2,LL,_bbb)),
               _平均),
        刻みながら平均を取る(N2,_最大値,_n,LL,R).

刻み範囲の値を選択する(N,N2,LL,_bbb) :-
        member([_aaa,_bbb],LL),
        _aaa > N,
        _aaa =< N2.