「round関数」を使って四捨五入した時に、小数点の桁数が「.5」の時に特定の値では切り捨てされてしまう。

「round」関数は数値を四捨五入する関数です。

例えば、0より大きく0.5未満の数値(0.1、0.2、など)は0になり、0.5以上1未満の数値は1になることが期待されています。

しかし、実際には銀行家の丸め(banker’s rounding)と言われる「偶数丸め」が行われています。具体的には、「0.5、1.5、2.5」といった値があった時に、近い偶数に四捨五入されることを意味します。

例えば、下記のようなデータがあったとします。

image

列ヘッダメニューから「数値関数を使う」を選び、「四捨五入(round)」を選択します。

image

計算を作成のダイアログが開き、「round」関数が使用されています。

image

実行すると、下記の結果が得られます。

image

「2.5」のような数値は「3」になっているのが期待ですが、代わりに近い偶数である「2」に切り捨てられていることがわかります。

もし、全ての「.5」の値を次の数値に切り上げたい場合は、「round_half_up」という別の関数が使用できます。

列ヘッダメニューから「計算を作成」を選び、「標準」を選択します。

image

計算エディタには下記のように指定します。

round_half_up(<列名>)

image

実行することで、「2.5」のような値は「3」に切り上げられていて、期待通りの結果になっていることが確認できます。

image

この「round_half_up」関数は「Janitor」パッケージの関数であり、ExploratoryのデフォルトのRパッケージとしてインストール/ロードされているため、すぐに使用することができます。

Janitor パッケージ: リンク
round_half_up 関数: リンク