8.39. if 条件選択¶
書式1: if(bool,num1,num2)
書式2: if(bool,str1,str2)
書式3: if(bool,date1,date2)
書式4: if(bool,time1,time2)
書式5: if(bool,bool1,bool2)
第1パラメータの値が真であれば第2パラメータを、偽であれば第3パラメータを返す。 第1パラメータがNULL値であればNULL値を返す。 第2パラメータと第3パラメータは同じ型でなくてはならないことに注意する。
利用例¶
importと入力データ(CSV)の準備
1import nysol.mcmd as nm 2 3with open('dat1.csv','w') as f: 4 f.write( 5'''id,time 61,101215 72,210110 83, 94,120001 10''') 11 12with open('dat2.csv','w') as f: 13 f.write( 14'''id,val 151,1 162,0 173, 184,-2 19''') 20 21with open('dat3.csv','w') as f: 22 f.write( 23'''id,val 241,10 252,0 263,-5 274,0 28''')
基本例
time項目が数値として120000以下であれば"AM"、そうでなければ"PM"を出力する。
1nm.mcal(c='if(${time}<=120000,"AM","PM")', a='ampm', i="dat1.csv", o="rsl1.csv").run() 2### rsl1.csv の内容 3# id,time,ampm 4# 1,101215,AM 5# 2,210110,PM 6# 3,, 7# 4,120001,PM
真偽値による条件選択
$b{項目名}
によって、データ上の値"1"は真、
"0"は偽、そしてその他の値はNULLとして解釈される。
1nm.mcal(c='if($b{val},"true","false")', a='bool', i="dat2.csv", o="rsl3.csv").run() 2### rsl3.csv の内容 3# id,val,bool 4# 1,1,true 5# 2,0,false 6# 3,, 7# 4,-2,
時刻型として比較
1nm.mcal(c='if($t{time}<=0t120000,"am","pm")', a='ampm', i="dat1.csv", o="rsl4.csv").run() 2### rsl4.csv の内容 3# id,time,ampm 4# 1,101215,am 5# 2,210110,pm 6# 3,, 7# 4,120001,pm
if関数のネスト
1nm.mcal(c='if(${val}>0,"plus",if(${val}<0,"minus","zero"))', a='sign', i="dat3.csv", o="rsl5.csv").run() 2### rsl5.csv の内容 3# id,val,sign 4# 1,10,plus 5# 2,0,zero 6# 3,-5,minus 7# 4,0,zero