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