8.14. cast 型変換¶
書式1: s2n(str)
書式2: n2s(num)
書式3: n2b(num)
書式4: s2n(str)
書式5: s2d(str)
書式6: s2t(str)
書式7: s2b(str)
書式8: d2s(date)
書式9: d2t(date)
書式10: t2s(time)
書式11: t2d(time)
書式12: b2n(bool)
書式13: b2s(bool)
型変換を行う関数群。 mcalでは型の自動変換は行わないため、必要なときはユーザが明示的に型変換を指定しなければならない。 n2b(s2b)関数は、1("1")を真に0("0")を偽に、それ以外をNULL値に変換する。 b2n(b2s)関数は、真は1("1")に偽は0("0")に変換する。 d2t関数は、日付型を時刻型に変換するが、そのとき時刻として12:00:00を自動的に補完する。 d2s関数は、8文字固定長文字列("yyyymmdd")に変換し、t2s関数は14文字固定長文字列("yyyymmddHHMMSS")に変換する。 日付/時刻についての詳細は「 ef{sect:datetime}日付型と時刻型」を参照のこと。
利用例¶
importと入力データ(CSV)の準備
1import nysol.mcmd as nm 2 3with open('dat1.csv','w') as f: 4 f.write( 5'''id 61 72 83 94 10''') 11 12with open('dat2.csv','w') as f: 13 f.write( 14'''id,v1,v2,v3 151,10,5,7 162,5,12,11 173,3,6,2 184,14,16,11 19''') 20 21with open('dat3.csv','w') as f: 22 f.write( 23'''id,val 241,10 252,0 263,-5 274,0 28''')
乱数の固定長化
1から9999の整数乱数を発生させ、4桁固定長で出力する。 fixlen関数は整数型のデータ(ここではrandiの結果)には対応していないので、 n2s関数で文字列型に変換する必要がある。
1nm.mcal(c='fixlen(n2s(randi(1,9999,11)),4,"R","0")', a='rsl', i="dat1.csv", o="rsl1.csv").run() 2### rsl1.csv の内容 3# id,rsl 4# 1,1803 5# 2,0684 6# 3,0195 7# 4,6647
真偽パターン
項目v1,v2,v3が10異常かどうかを判定し、01のパターンを出力する。
1nm.mcal(c='cat("",b2s(${v1}>=10),b2s(${v2}>=10),b2s(${v3}>=10))', a='rsl', i="dat2.csv", o="rsl2.csv").run() 2### rsl2.csv の内容 3# id,v1,v2,v3,rsl 4# 1,10,5,7,100 5# 2,5,12,11,011 6# 3,3,6,2,000 7# 4,14,16,11,111