NHK BSディベート・日韓の課題 part7

このエントリーをはてなブックマークに追加
78アンケート集計プログラム(1/4)
#
# NHK-BSアンケート自動集計プログラム
# 【調査対象】 http://www.nhk.or.jp/bsdebate/0506/mail_01.html
# 【内容】 上記サイトのアンケートを収集しエクセルに出力します。
#      投稿数情報、人数情報、本文等を各種表形式に整理します。
# 【制約】 OS:Windows、インターネット接続環境、エクセル必要
# 【使用方法】 日本語プログラミング言語「なでしこ」をダウンロードし、
#      下記プログラムを実行します。データ転送中にエクセルのセルを
#      クリックすると、エラーが発生する恐れがあるためご注意ください。
# 【使用言語】日本語プログラミング言語「なでしこ」
#      公式サイト http://www.nadesi.com
# 【配布転載】 可。制約はありません。
#

元URLは「http://cgi2.nhk.or.jp/bsdebate/cgi-bin/cgi_svr/view_opinion_detail.cgi?themeid=26&itemid=119&recid=
結果とはハッシュ。結果は「」
投稿数とは整数

オンでエクセル起動
エクセル新規ブック
セル一覧は「A1,投稿数{~}A2,男性投稿{~}A3,女性投稿{~}A4,好感投稿{~}A5,不快投稿{~}」&,
「A7,人数{~}A8,男性人数{~}A9,女性人数{~}A10,好感人数{~}C10,好感男性{~}E10,好感女性{~}」&,
「A11,不快人数{~}C11,不快男性{~}E11,不快女性{~}A13,世代{~}B13,好感人数{~}」&,
「C13,不快人数{~}A14,10歳未満{~}A15,10代{~}A16,20代{~}A17,30代{~}A18,40代{~}」&,
「A19,50代{~}A20,60代{~}A21,70代{~}A22,80代{~}A23,90代{~}A24,100代{~}A30,番号{~}」&,
「B30,氏名{~}C30,性別{~}D30,年齢{~}E30,住所{~}F30,親しみ{~}G30,題名{~}H30,本文」
セル一覧をCSV取得して反復
  対象[0]へ対象[1]をエクセルセル設定
「A26」へ「【注1】パーセントは小数点以下切り捨てで表記しました。
【注2】氏名・性別が同一の複数投稿は一人と見なしました。
【注3】複数投稿の場合、その人物の親近感は最新の投稿を反映しました。」をエクセル一括設定
79アンケート集計プログラム(2/4):2005/06/11(土) 11:12:08 ID:KAopqQIy
オンの間
  URLは元URL&回数
  HTMLはURLのHTTPデータ取得して、それをSJIS変換
  条件は『g">(\d{1,4})\s*((?:(?!</).)+)』
  HTMLを条件で正規表現マッチ
  番号は抽出文字列[0]。もし、回数が1ならば、投稿数は番号
  題名は抽出文字列[1]
  データはHTMLから『span』のタグ切出
  親近感はデータ[0]のタグ削除して空白除去
  データ[1]のタグ削除を『.([^ ]+).(男|女).(\d{1,3}才).(.*)』で正規表現マッチ
  氏名は抽出文字列[0]
  性別は抽出文字列[1]
  年齢は抽出文字列[2]
  世代はINT(年齢/10)*10&「代」
  住所は抽出文字列[3]
  データ[2]の『<br>』を「{~}」へ正規表現置換してタグ削除
  本文はそれの『[&]quot;』を「"」へ正規表現置換
  本文はそれの『[&]#39;』を「'」へ正規表現置換
  本文はそれの『[&]lt;』を「<」へ正規表現置換
  本文はそれの『[&]gt;』を「>」へ正規表現置換
  
  「A{30+回数}」へ番号をエクセルセル設定
  「B{30+回数}」へ氏名をエクセルセル設定
  「C{30+回数}」へ性別をエクセルセル設定
  「D{30+回数}」へ年齢をエクセルセル設定
  「E{30+回数}」へ住所をエクセルセル設定
  「F{30+回数}」へ親近感をエクセルセル設定
  「G{30+回数}」へ題名をエクセルセル設定
  「H{30+回数}」へ本文をエクセルセル設定
80アンケート集計プログラム(3/4):2005/06/11(土) 11:13:16 ID:KAopqQIy
  
  もし、結果@「{氏名}」@「{性別}」=「」ならば、
    結果@「{氏名}」@「{性別}」=「{親近感}」
    結果@「{親近感}」@「{性別}」=結果@「{親近感}」@「{性別}」+1
    結果@「{親近感}」@「{世代}」=結果@「{親近感}」@「{世代}」+1
    結果@「{世代}」=結果@「{世代}」+1
  結果@「延べ数」@「{親近感}」=結果@「延べ数」@「{親近感}」+1
  結果@「延べ数」@「{性別}」=結果@「延べ数」@「{性別}」+1
  「A{30+回数}」をエクセル選択
  もし、回数が投稿数ならば、抜ける

男性投稿=結果@「延べ数」@「男」
女性投稿=結果@「延べ数」@「女」
男性投稿割合=INT(男性投稿/投稿数*100)
女性投稿割合=INT(女性投稿/投稿数*100)
好感投稿=結果@「延べ数」@「<感じる>」
不快投稿=結果@「延べ数」@「<感じない>」
好感投稿割合=INT(好感投稿/投稿数*100)
不快投稿割合=INT(不快投稿/投稿数*100)
男性人数=結果@「<感じる>」@「男」+結果@「<感じない>」@「男」
女性人数=結果@「<感じる>」@「女」+結果@「<感じない>」@「女」
人数=男性人数+女性人数
男性割合=INT(男性人数/人数*100)
女性割合=INT(女性人数/人数*100)
好感人数=結果@「<感じる>」@「男」+結果@「<感じる>」@「女」
不快人数=結果@「<感じない>」@「男」+結果@「<感じない>」@「女」
好感人数割合=INT(好感人数/人数*100)
不快人数割合=INT(不快人数/人数*100)
81アンケート集計プログラム(4/4):2005/06/11(土) 11:14:11 ID:KAopqQIy
「B1」へ「{投稿数}通」をエクセルセル設定
「B2」へ「{男性投稿}通 ({男性投稿割合}%)」をエクセルセル設定
「B3」へ「{女性投稿}通 ({女性投稿割合}%)」をエクセルセル設定
「B4」へ「{好感投稿}通 ({好感投稿割合}%)」をエクセルセル設定
「B5」へ「{不快投稿}通 ({不快投稿割合}%)」をエクセルセル設定
「B7」へ「{人数}人」をエクセルセル設定
「B8」へ「{男性人数}人 ({男性割合}%)」をエクセルセル設定
「B9」へ「{女性人数}人 ({女性割合}%)」をエクセルセル設定
「B10」へ「{好感人数}人 ({好感人数割合}%)」をエクセルセル設定
「D10」へ「{結果@『<感じる>』@『男』}人」をエクセルセル設定
「F10」へ「{結果@『<感じる>』@『女』}人」をエクセルセル設定
「B11」へ「{不快人数}人 ({不快人数割合}%)」をエクセルセル設定
「D11」へ「{結果@『<感じない>』@『男』}人」をエクセルセル設定
「F11」へ「{結果@『<感じない>』@『女』}人」をエクセルセル設定
11回
  世代は「{(回数-1)*10}代」
  好感人数=結果@「<感じる>」@「{世代}」
  もし、好感人数が「」ならば、好感人数=0
  不快人数=結果@「<感じない>」@「{世代}」
  もし、不快人数が「」ならば、不快人数=0
  もし、結果@「{世代}」=0ならば、
    好感割合=0
    不快割合=0
  違えば、
    好感割合=INT(好感人数/結果@「{世代}」*100)
    不快割合=INT(不快人数/結果@「{世代}」*100)
  「B{13+回数}」へ「{好感人数}人 ({好感割合}%)」をエクセルセル設定
  「C{13+回数}」へ「{不快人数}人 ({不快割合}%)」をエクセルセル設定

「B1」をエクセル選択
おわり