このような1行1ユーザーというデータがあったとしましょう。
課題A、課題Bという列がありますがそれぞれの課題を行った回数が1回、2回とあるのですが、この回数毎に行を作り、課題A、課題Bというものだけを列にしておきたいとします。
つまり、以下のようなデータの形にしたいとします。
このためには、よく使われるパターンなのですが、Gather-Separate-Spread という順番でデータを加工していくことで、上のようなデータの形にすることができます。
まずは、 課題A1回目, 課題A2回目, 課題B1回目, 課題B2回目の列を選んでから、列ヘッダーメニューからGather->選択された列を選びます。
そのまま実行すると以下のようなデータの形になります。
もともとの4つの列の名前が key という新しくできた列の値となり、もともとの値がvalueという列の値となりました。
ちょっとデータのほうが汚いので、きれいにします。
まずは、key列ですが、変なスペースが入っている行があります。これは、str_clean()という関数で除去できます。
そのまま実行すると以下のようなデータの形になります。
次にvalue列ですが、こちらは数値のはずが数値のデータタイプとなっていないので、数値に変換します。
そのまま実行すると以下のようなデータの形になります。
次は、課題A、課題Bというのと1回目、2回目というのを分けます。これは、単純に3文字目より前か後にくるかで分けれそうです。
出てきたSeparateのダイアログの中で分割する場所を決めます。今回は、3番目の文字の前後で分割したいので、位置の方を3にします。
そのまま実行すると以下のようなデータの形になります。key_1とkey_2という2つの列に分かれました。
あとはそれぞれの課題(課題A、課題Bなど)を列とするだけです。
そのまま実行すると以下のようなデータの形になります。
せっかくですので、key_2という列の名前を「回数」とわかりやすくしておきましょう。
これでデータの準備が終わりました。
こちらにサンプルのデータをEDF(Exploratory Data Format)の形で置いておきました。こちらはExploratoryの方にインポートすると再現ステップもついてくるのでどのようにデータが加工されたのかが分かって便利です。