過去の桐井戸端BBS (桐ver.8)
10448 体力測定のデータから自動で判定するような計算式を作成したい TETO 2001/03/22-18:01
現在、体力測定の結果を入力しているのですが、自動で判定をするような計算式を作成したいのですが複雑でわかりません。
教えてください・・・。
たとえば握力で、男性の場合0〜24才の人は0kg〜39kgの場合1点、
40〜47kgの場合2点、
48kg以上の場合3点、
一方25才〜29才の人は、0〜42kgの場合1点、
43〜50kgの場合2点、
51kg以上の場合3点
そして女性の場合0〜24才の人は0から22kgの場合1点、
23〜28kgの場合2点、
29kg以上は3点、
一方25才〜29才までの人は0〜23kgの場合1点、
24〜29kgの場合2点、
30kg以上は3点
・・・というようにかなり複雑なんですが、どのようにすれば良いのでしょうか?皆さん是非力を貸してください。
ちなみに桐8を使用しています。
10451 Re:体力測定の計算式 宮城 2001/03/22-18:31
記事番号10448へのコメント
TETOさん、こんにちは。

項目計算式をここに書いても汎用性がはなはだ疑問ですので、ヒントという形式にします。

性別・年令・握力による三次元テーブルですね。これをいきなり項目計算の中ですべて記述しようとすると大変。

おそらく、テーブル形式に整理するという作業はなさってるでしょうから、よく眺めて下さい。
性別・年令により4グループに分かれていることに気がつきますか?

男性& 0〜24才:グループ1
男性&25〜29才:グループ2
女性& 0〜24才:グループ3
女性&25〜29才:グループ4

としてしまいます。[グループ]という項目を追加して上記判定をすることはできますよね?

さて、あとはグループと握力による判定式を書けばよいだけ、となります。

念のため、

#条件選択([グループ]=1,#条件選択([握力]<=39,1,
[握力]<=47,2,1,3),(以下グループ2以降の判定を記述)

ヒット順に抜けるはずなのでこのような記述になります。

10453 Re:おまけ 宮城 2001/03/22-19:01
記事番号10451へのコメント
>#条件選択([グループ]=1,#条件選択([握力]<=39,1,
>[握力]<=47,2,1,3),(以下グループ2以降の判定を記述)

Windows版桐ではメモ帳を使う手があります。

#条件選択([グループ]=1
,#条件選択([握力]<=39,1,[握力]<=47,2,1,3),
[グループ]=2
,#条件選択([握力]<=42,1,[握力]<=50,2,1,3),
,(以下グループ3以降の判定を記述)

こんな感じに改行を入れると、カッコの対応関係が比較的わかりやすくなります。

出来上がり後、改行を取って1行にしてコピーし、桐の定義画面に貼付。

おまけでした。
10454 Re:体力測定の計算式 えむに 2001/03/22-20:34
記事番号10448へのコメント
TETOさん、こんばんわ。

一つの例ですが・・・・表引きを使った方法です。

「得点」と「測定」のテープルを二つ用意します。
桐は文字列も表引きでの「=,<」などは、
アスキーコード値で評価しますので0→1→2・・と数値の大小と同じ比較をしてくれます。
(ポイントはゼロ詰して桁数を合わせる事です)
これを使うと割にシンプルに出来るのではないかと思います。

●表「得点」テーブの定義・・・カッコ内の(X)=文字列,(N)=数値

・測定区分(X) ← 握力 背筋力・・など
・性別(X)   ← 男 女
・年齢区分(X) ← 00〜24 25〜29 30〜99  注意:0才も桁数を2桁にする事
・測定値(N)
・得点(N)
・連結(X)・・・計算項目 #cat([測定区分],[性別],[年齢区分],"-",#str([測定値],3))

●表「測定」テーブルの定義・・・・ここに実際の測定値を入力します。

・測定区分(X)
・性別(X)
・年齢(N)
・年齢区分(X)・・計算項目 #cond([年齢]<25,"00〜24",[年齢]<30,"25〜29",[年齢]>29,"30〜99")
・実測値(N)
・得点(N)・・・・計算項目 #tlu([連結],<=,得点,[連結],[得点])
・連結(X)・・・・計算項目 #cat([測定区分],[性別],[年齢区分],"-",#str([実測値],3))

 →連結のデータ値例 
     握力男00〜24-039
     握力男00〜24-047


 注意:#tlu=#表引き #cond=#条件選択 #cat=#連結・・・の略です。

ポイントは、
・項目[連結]に表引きの時の比較データをまとめてしまいます。
・表引きは上の行から評価しますので条件に合致した時の値を取り込みます。
 「得点」のデータ順が特定の条件を満たしていればこの得点は期待の値を取り込みます。

注意点
・表引き参照される「得点」のデータはランダムに入力してはダメです。
 年齢と測定値は、若い順に登録する事が条件です。(表引きで不等記号を使うため)
・数値を文字列にして評価しますので、桁数の違うデータがあると狂います。
 例:100才以上の人
 また測定値は充分な先頭ゼロ詰をする。(例:#str([実測値],3)・・3ケタ指定)

例がないと解りにくいかもしれませんね・・・(汗)
10455 Re:体力測定の計算式 今村 誠 2001/03/22-22:12
記事番号10448へのコメント
男の場合だけを書いています仮に表の項目を性別、年代、握力、として値集合を性別と年代に設定します。
握力は数値にします。最後の,1,4)を削除してから女性の条件式を書けば完成です。

#cond(([性別]="男" .and [年代]="0〜24歳") .and [握力]<40,1,([性別]
="男" .and [年代]="0〜24歳") .and (39.9<[握力] .and [握力]<47),2,([性別]
="男" .and [年代]="0〜24歳") .and 46.9<[握力],3,([性別]="男" .and [年代]
="25〜29歳") .and [握力]<43,1,([性別]="男" .and [年代]="25〜29
歳") .and (42.9<[握力] .and [握力]<51),2,([性別]="男" .and [年代]="25〜29
歳") .and 50.9<[握力],3,1,4)

点数の項目は整数でもいいと思います。

10483 Re:体力測定の計算式 今村 誠 2001/03/23-23:08
記事番号10455へのコメント
#cond(([性別]="男" .and [年代]="0〜24歳") .and [握力]<40,1,
([性別]="男" .and [年代]="0〜24歳") .and [握力]<47,2,
([性別]="男" .and [年代]="0〜24歳") .and 46.9<[握力],3,
([性別]="男" .and [年代]="25〜29歳") .and [握力]<43,1,
([性別]="男" .and [年代]="25〜29歳") .and [握力]<51,2,
([性別]="男" .and [年代]="25〜29歳") .and 50.9<[握力],3,1,4)
宮城さんのコメントを見てよく考えたら上記の式でも握力が順番に
抜けていくので簡単になりますね。
年代としていますが、年齢の方が汎用性があると思いました。
後えむにさんが書いてらっしゃいますが、握力だけでなく、
背筋力や肺活量などもあるかもしれませんので、項目名は
性別 年齢 握力 肺活量 背筋力 などとして 計算項目で
条件を小さい方、或いは大きい方からから書いていけば
4つまでの条件式だと項目は増やさないでも良いのではと思いました。
#cond(
([性別]="男" .and [年齢]<25) .and [握力]<40,1,
([性別]="男" .and [年齢]<25) .and [握力]<47,2,
([性別]="男" .and [年齢]<25) .and 46.9<[握力],3,
([性別]="男" .and [年齢]<29) .and [握力]<43,1,
([性別]="男" .and [年齢]<29) .and [握力]<51,2,
([性別]="男" .and [年齢]<29) .and 50.9<[握力],3,
1,4)

たくさんの分類だとえむにさんの表引きがお薦めです。

10486 Re:体力測定の計算式 TETO 2001/03/24-08:36
記事番号10483へのコメント
みなさん、ありがとうございました!とても役にたちました。

戻る