みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
いつも参考にさせて頂いています。
ファイルメーカーにてExelのMode関数のように最頻値を求めることは可能でしょうか?
フィールド1~フィールド4に数値を入力し、最頻値を取得する処理を行いたいと考えています。
環境は
FileMaker 15 Pro
Win7 Pro 32bit
Offline
最頻値を求めるにはサンプル数が少な過ぎとも思えますが、
一応ループ式から求める作例、
Let([
$lst=List(フィールド1;フィールド2;フィールド3;フィールド4);
$n=ValueCount($lst);
$max="";
$res="";
$fnc="Case($n=0; $res;
Let([
#itm=Getvalue($lst; $n);
#vct=ValueCount(FilterValues($lst; #itm));
$max=Max(#vct; $max);
$res=Case($max=#vct; #itm; $res);
$n=$n-1
]; Evaluate($fnc))
)"
];
Evaluate($fnc)
)
※ 複数同順の場合は、先出の方の値を返す式にしています。
Last edited by Hiro (2017-03-18 21:28:20)
Offline
Hiroさんの式をお借りして、
全てが異なる値の場合、「なし」を返し、
同順複数の場合、そのリストを返す式を。
Let ( [
$lst = List ( フィールド1 ; フィールド2 ; フィールド3 ; フィールド4 ) ;
$n = ValueCount ( $lst ) ;
$max = 0 ;
$res= "なし" ;
$fnc = "Case ( $n = 0 ; $res ;
Let ( [
$itm = Getvalue ( $lst ; $n ) ;
$vct = ValueCount ( FilterValues ( $lst ; $itm ) ) ;
$res = Case ( $vct = 1 ; $res ;
$max < $vct ; $itm ;
$max = $vct ; Case ( IsEmpty ( FilterValues ( $res ; $itm ) ) ; List ( $itm ; $res ) ; $res ) ; $res ) ;
$max = Max ( $vct ; $max ) ;
$n=$n-1
]; Evaluate($fnc))
)"
];
Evaluate($fnc)
)
対象のフィールド数を問いません。
Offline
HIROさんチポさんご回答ありがとうございます。
やはり最頻値を求めるのは難しそうですね。上記計算式で出来るようになりました。
ありがとうございました。
Offline
Pages: 1
[ Generated in 0.005 seconds, 9 queries executed - Memory usage: 550.98 KiB (Peak: 583.33 KiB) ]