人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

アンケートを集計するための生データとして、
5択(複数選択あり)の質問の回答を
'00100'や'10001'など選択したものに
1のフラグが立つという形で生成したものが
ありますが、これをexcelもしくはaccessで
集計する場合、どういった方式がありますか?

●質問者: rihei
●カテゴリ:コンピュータ 科学・統計資料
✍キーワード:access Excel アンケート フラグ 生データ
○ 状態 :終了
└ 回答数 : 6/6件

▽最新の回答へ

1 ● gauchon
●19ポイント

答えになっていないかもしれませんが,

私は,質問の意味を

「複数回答が0?1で表現されていて,

一つでも1があるならば,1を記す」

というものだと解釈しました.

そう考えると,エクセルでは,

=IF(SUM(B1:F1)>0,1,0)

によって,一つでも1なら1

1がないなら0を返します.

(ただし,複数選択のセルがB1:F1に入力されている場合です)


2 ● master-3rd
●19ポイント

もし、A1に「10010」のように入っている場合、こんなのはどうでしょうか?(A列は文字列ですよね)

B1=IF(LEFT($A1,1)="1","回答","非回答")

C1=IF(MID($A1,2,1)="1","回答","非回答")

D1=IF(MID($A1,3,1)="1","回答","非回答")

E1=IF(MID($A1,4,1)="1","回答","非回答")

F1=IF(MID($A1,5,1)="1","回答","非回答")

後はどのように集計するかわかりませんが、それぞれの列をSUMで足して、グラフ化とかでしょうか?


3 ● きゃづみぃ
●18ポイント

COUNTIFで集計できます。

=COUNTIF(A:A,"1????")

とすれば 先頭が 1のものが カウントされます。

以下

=COUNTIF(A:A,"?1???")

=COUNTIF(A:A,"??1??")

とやっていけばいいですよ。


4 ● fuentebella
●18ポイント

生データがテキストファイルになっていれば、

これで 各質問ごとに列が作られますのであとは、SUMなりなんなり関数が簡単に使えると思います。

Accessの場合はファイル->外部データの取り込み->インポートで同様に質問ごとに分けることができます。


5 ● りくっち
●18ポイント

基本的にはExcelにしてもACCESSにしても、

一旦「00000」の形式のデータから

Answer_1?5までのそれぞれの回答結果を抽出・分解する作業が必要だと思います。


Excelの場合、関数で抽出・分解する方法は他の回答者の方の方法で十分だと思います。

その他には、データそのものを分解しても良いなら、

データ列を選択し、「データ」→「区切り位置」をクリック。

「スペースによって・・」にチェックをして次へ。

データのプレビュー画面をクリックすると、区切り位置が矢印で表示されるので、

各数字の間に計4本区切り位置を設定して次へ。

完了をクリックすると、A?E列に各回答が分解されます。

A列(元データが入っていた列)は文字列になっていると思うので、

B列を選択、コピー、A列を選択→形式を選択して貼り付け「書式」で、

A列も数値表示に変わります。

また、この方法は分解時に必要分の列を右方向に上書するので、

右に必要データがある場合は、先に必要分の列挿入が必要です。


Accessの場合は、まずデータの全パターンと

その各回答結果をテーブル化してしまうのがすっきりすると思います。


まず、新規テーブル「ANSWER」を作成して、

項目「Answer_1」をつくり、「0」「1」の2レコードを入力します。


次は新規クエリーを作成して、「ANSWER」テーブルを5回マウントし、

それぞれのテーブルの「Answer_1」項目をドラッグします。

これがAnswer_1?5の結果になります。

「Answer_key」フィールドを追加してAnswer_1?5を連結した式を入力します。

後はテーブル作成クエリにして、結果をテーブルに出力してしまいます。

sqlだとこんな感じです。

SELECT [Answer_1] & [Answer_2] & [Answer_3] & [Answer_4] & [Answer_5] AS Answer_key,
Answer_.Answer_1 AS Answer_1, 
Answer__1.Answer_1 AS Answer_2,
Answer__2.Answer_1 AS Answer_3, 
Answer__3.Answer_1 AS Answer_4, 
Answer__4.Answer_1 AS Answer_5 INTO T_answer_ALL
FROM Answer_, Answer_ AS Answer__1, Answer_ AS Answer__2, Answer_ AS Answer__3, Answer_ AS Answer__4;

↑では「T_answer_ALL」という名前でテーブル出力しています。



これで全Answer_データのパターンと、そのAnswer_の結果を分離したテーブルができました。


後は、元データをACCESSにインポート、もしくはリンクし、

選択クエリでT_answer_ALLの「Answer_key」フィールドと元データのフィールドを結合、

必要なAnswer_のフィールドをドラッグすれば分解表示されますし、

そのまま「集計」すればAnswer_数も計算されます。

元データを「Sheet1」と仮定すると↓のような感じ。

SELECT Sum(T_answer_ALL.Answer_1) AS Answer_1, 
Sum(T_answer_ALL.Answer_2) AS Answer_2, 
Sum(T_answer_ALL.Answer_3) AS Answer_3, 
Sum(T_answer_ALL.Answer_4) AS Answer_4, 
Sum(T_answer_ALL.Answer_5) AS Answer_5
FROM Sheet1 INNER JOIN T_answer_ALL ON Sheet1.Answer_key = T_answer_ALL.Answer_key;

この作業が一回限りでなく、データ量も多いのならば、

ACCESSの方が運用は楽で動作も軽いと思います。

一回限りでデータ数もそんなに多くないのであれば、

関数や区切り位置で分解して、ピボット集計する方が簡単だと思います。


以上ご参考まで。


1-5件表示/6件
4.前の5件|次5件6.
関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ