統計の分野の人がリコードと呼ぶ作業をPhindで実験してみた。リコードという呼び方は方言(ジャーゴン)だそうで、プログラミングの分野ではnormalizeかcanonicalizeと呼ぶらしい。統計でnormalizeというと正規分布を用いて0から1までの数字にすることなどを指すことが多いので、まだまだ難しい問題が横たわっている。少なくとも、現在のAIでは詳しく作業内容(プロンプト)を説明しないといけない。
Phindのコマンド
Rのコードを作成してください。 dataというデータフレームにtimeという変数が入っており、データタイプはnumeric型です。 値は1から7までの値をとります。dplyrパッケージを用いて、 値1を0.5に、2を0.75、3を1.5、4を2.5、5を3.5、6を4.5、7を欠損値に書き変えるコードを書いてください。
library(dplyr) data %>% mutate(time = case_when( time == 1 ~ 0.5, time == 2 ~ 0.75, time == 3 ~ 1.5, time == 4 ~ 2.5, time == 5 ~ 3.5, time == 6 ~ 4.5, time == 7 ~ NA_real_ ) )
見事に書けている。
欠損値の指定、NA_real_
までしっかり書かれてある。
ちなみに、Rのリコードはmemiscパッケージ、carパッケージで行うと書いているものが多く、僕も過去のエントリでもこの2つのパッケージを紹介したことがあるが、この選択は間違いだ。memisc
やcar
はデータラベルを書き換えるだけで、データそのものを置き換えていない。view()コマンドで確認しても、表示されているのはデータラベルであり、データそのものが置き換わっているかは確認できないため、この2つのパッケージの挙動を理解せずに使っている人が非常に多い。
Rではデータラベルを拾って計算する(おせっかいな)パッケージが多く、そのパッケージでは意図した分析ができるが、データを拾って計算するパッケージでは誤った結果が出るため、リコードにmemisc
やcar
は使うべきではない。データそのものを置きかえられるdplyr
を使うべきである。