Exploratory アワー #432 - 別のデータフレームにある列名を現在のデータの列名として使いたい

例えば、アンケートの回答データで列名が「Q1」、「Q2」のように質問番号になっていることがあります。

一方で、別のデータフレーム(マスタデータ)には質問番号と対応する質問名のデータがあり、その質問名で回答データの列名を置き換える際の方法について紹介します。

問題

アンケートの回答データでは、列名が質問番号(Q1、Q2、Q3など)になっていますが、これらを別のマスターデータに存在する実際の質問名(例:「性別」、「年齢」など)に置き換えたいです。しかし、2つのデータフレームの形式が異なるため、単純な置き換えができません。

解決方法

UIを使った方法

回答データ: 1行1回答者ごとのデータで、質問ごとに列があるが、列名が質問番号になっている。

マスターデータ: 1行が1質問ごとで質問番号と質問名が列としてある。

マスターデータの形式変更

まず、マスターデータの形式を回答データと同じワイド型に変更します。

マスターデータで「質問番号」と「質問名」の列を選択し、列ヘッダーメニューから「ロング型からワイド型へ」を選択します。

ダイアログで、キー列に「質問番号」、値の列に「質問名」を指定します。

「実行」することで、マスターデータが質問番号(Q1、Q2など)を列名とし、対応する質問名を値とする1行のデータに変換されます。

回答データとマスターデータの結合

次に、変換したマスターデータを回答データに追加します。

回答データのステップメニューから「マージ」を選択します。

マージのダイアログで、データフレームに変換したマスターデータを指定します。

オプションには以下の設定を行います。

  • 「データフレーム名を保持する」のチェックを外します。
  • 「データ・タイプを強制的に揃える」にチェックを入れます。

実行することで、マスターデータの質問名が回答データの最後の行として追加されます。

新しい列名の適用

最後に、追加された質問名の行を新しい列名として設定します。

ステップメニューから「その他」の「指定した行を列名にする」を選択します。

ダイアログで「下から」を選び、行番号に「1」を指定します。また、「全ての列のデータ型を再評価」にチェックを入れて実行します。

実行することで、質問番号が対応する質問名に置き換わります。

回答者IDの列名が「NA」となっているため、列名を変更します。

列ヘッダーメニューから「列名を変更」の「新しい列名を指定」を選択します。

「回答者ID」などの適切な名前を入力します。

これによって全ての列名をきれいに整えていくことができました。

これらの手順を実行することで、アンケートの回答データの列名を、マスターデータにある実際の質問名に置き換えることができます。この方法は、質問番号と質問名の対応関係が別のマスターデータに存在する場合によく使用されます。

Rのコードを使った方法

Rのコードで実行をする場合は、以下のコードを使用します。

# 顧客満足度_Rawデータフレームに顧客満足度_Masterのデータフレームの行を追加します
bind_rows(
  `顧客満足度調査_Master`, # マージ(行結合先のデータフレームの指定)
  id_column_name = "ID",
  current_df_name = "顧客満足度調査_Raw", # 結合元のデータフレーム名
  force_data_type = TRUE # データ型を強制的に一致させる
) %>%
# 指定した行をデータフレームの列名(ヘッダー)として使用します
row_as_header(
  row_index = -1, # 最後から1行目を列名に指定
  clean_names = TRUE, # 列名をクリーンアップ
  guess_data_type = TRUE # 各列のデータ型を自動推測して変換
)

ビデオ

参考情報

Export Chart Image
Output Format
PNG SVG
Background
Set background transparent
Size
Width (Pixel)
Height (Pixel)
Pixel Ratio