2023.10.24作成  2024.2.8更新

これから研究を始める高校生と指導教員のために 第2版
探究活動と課題研究の進め方・論文の書き方・口頭とポスター発表の仕方
(これ研)

副読文書

VI-1. アンケート結果の示し方
選択肢から1つを選んで回答(複数選択が不可)
他のアンケート結果との比較ではなく、
そのアンケート結果における回答の分布を見ることが目的

私のサイトでの本書紹介文

共立出版の本書紹介サイト ご購入もこちらからどうぞ

 本章では、以下のようなアンケートの結果のまとめ方を説明します。

・選択肢から1つを選んで回答して貰う(複数選択が不可)。
・そのアンケート結果における回答の分布を見ることが目的。他のアンケート結果と回答の分布を比較するわけではない。

たとえば、○○町の観光推進策を検討するために、基礎情報として、町に観光に行きたいかどうかをアンケートしたとします。このアンケートは、その回答の分布を見て、観光に行きたい人がどれくらいいるのかを知ることが目的です。他のアンケート結果(「○○町の魅力は何か」とか)と比較するようなものではありません。
 こうしたアンケートでは、円グラフまたは帯グラフで回答の分布を示します。アンケート間の比較が目的ではないので、その1つのアンケート結果のみを作図します。ただし、類似したアンケートそれぞれについて作図をし、それらを並べて示すこともあります。
 作図の仕方を、○○町に観光に行きたいかどうかのアンケート結果(「これ研」には載っていません)を例に説明します。「これ研」の第3部第4章「アンケート結果の示し方」(p. 98)を読んで、アンケート結果の示し方を理解しておいて下さい。

  1. 解析に用いるcsvファイルのRへの読み込み
  2. 作図
    1. 円グラフの作図
    2. 帯グラフの作図

 RStudioを起動して下さい。起動方法の詳しい説明は、RStusioの起動の仕方を参照して下さい。そして、作業ディレクトリを指定します。

作業ディレクトリの指定

setwd("/Users/sakai/Documents/書籍等原稿/これ研2版/課題研究解析")

# あなたの作業ディレクトリの位置を""で囲んで書きます。

# この命令文を実行しておきます。

# 作業ディレクトリの指定

 作図にはtidyverseというものを用います。tidyverseをインストールしてありますか? まだならば、「作図の準備」の説明に従ってインストールして下さい。tidyverseをRに読み込みます。

tidyverseのRへの読み込み

library(tidyverse)

# RStudioを起動しこの命令文を実行しておきます。Rstudio起動後、一度だけ実行すればよいです。Rstudioを終了して再び起動したときは再実行する必要があります。

 scalesというものも作図に用います。scalesをRに読み込みます。scalesはRに備わっているので、インストールする必要はありません。

scalesのRへの読み込み

library(scales)

# この命令文を実行しておきます。Rstudio起動後、一度だけ実行すればよいです。Rstudioを終了して再び起動したときは再実行する必要があります。

 解析では、データフレームの中の特定のデータ列を指定することを行います。指定の方法です。

データフレームの中の特定のデータ列の指定方法

データフレーム名$データ列名

# データフレーム名を書き、$を挟んで、指定したいデータ列名を書きます。

# 実行例

d$Angle.degree
d$Flying.distance.m

# データフレームdに入っているデータ列Angle.degree, flying.distance.mを指定します。

このページの文頭に戻る

1. 解析に用いるcsvファイルのRへの読み込み

 googleフォームで、○○町に観光に行きたいかどうかのアンケート(画面1)を行ったとします。

画面1
○○町に観光に行きたいかどうかのアンケート

このアンケート結果を、csvファイル「Visit.csv」(画面2)に保存しました(架空データです)。Rで解析作図をするために英語にしています。町に観光に行きたいか(Visit)に対して、「強くそう思う(Strongly agree)」「そう思う(Agree)」「どちらとも言えない(Neutral)」「思わない(Disagree)」「まったく思わない(Strongly disagree)という回答を書いています。このcsvファイルのデータを使って作図を行います。

画面2
このデータのcsvファイルのダウンロード

 このcsvファイルをダウンロードして、あなたの作業ディレクトリに入れて下さい(作業ディレクトリの指定を参照)。

 ご自身のデータを用いる場合は、そのデータが入ったcsvファイルを作業ディレクトリに入れて下さい。Excelで作ったファイルをcsvファイルに変換する方法は、Excelで作った解析用ファイルのcsv形式での保存を参照して下さい。

 csvファイルをRに読み込み、データフレームに格納します。

csvファイルのRへの読み込み

d <- read.csv("Visit.csv")

# csvファイル「Visit.csv」を読み込んでデータフレームdに格納します。ファイル名を""で囲みます。ファイル名の拡張子「.csv」も忘れずに書きます。

# データフレームの名称(この例ではd)はお好みのものでよいです。

# Excelで作った解析用ファイルのRへの読み込み

このページの文頭に戻る

2. 作図

 tidyverseとscalesを使っての作図の仕方を説明します。これらをRに読み込んでいますか? 読み込んでいない場合は、tidyverseのRへの読み込みscalesのRへの読み込みを実行して読み込んで下さい。

 作図の命令文の基本です。

作図の命令文の基本

ggplot(データフレーム名, aes(データ)) +
geom_描く図の英語名() +
書式の命令文 +
書式の命令文

# ggplotで、用いるデータを指定します。

# geom_で、描く図を指定します。

# 書式の命令文を+で繋げます。いくつでも繋げることができます。最後の命令文の後に+は不要です。

2.1. 円グラフの作図

 円グラフの作図の仕方を説明します。画面2のデータを使って、○○町に観光に行きたいかどうかの回答分布(画面3-1, 3-2)を作図します。

画面3-1

画面3-2

 Rでは画面3-1を作図します。この図を、PowerPoint等に読み込んで画面3-2に加工します(Rでもこうした加工は出来るのですが、難しいので、PowerPointでやってしまいましょう)。日本語の論文・プレゼンテーションならば説明文も日本語にします。英語部分は白く塗りつぶすなり切り取るなりして、そこに日本語を書いて下さい。回答(「強くそう思う」等)も円グラフの中に書き込みます。

 作図の前に、回答の並び順を指定しておきます。

データの並び順の指定

d$Visit <- factor(d$Visit, levels = c("Strongly agree", "Agree", "Neutral", "Disagree", "Strongly disagree"))

# 回答の並び順を指定します。データフレームd中のデータ列Visitに、○○町に観光に行きたいかどうかの回答の名称が入っています。並べたい順番に回答の名称を書きます。回答は文字情報なので、回答の名称を""で囲みます。

# d$Visitの中身を上書きするためにd$Visitに再格納します。

# この命令を実行しないとアルファベット順に並びます。

# データの並び順の指定

円グラフは、帯グラフを描いてから、それを円グラフに変換するという方法で作図します。

円グラフの作図;データ列に入っている各項目の数を集計して1つの図を描く場合

# 命令文が続く場合には+で繋げ、最後の命令文の後には+を付けません。

# 必須命令文

ggplot(d, aes(x = "", fill = Visit)) +

# データフレームdを指定します。

# 1つの図を描く場合はx軸を指定しません。x = ""とします。xは小文字です。""の中は空です。

# fill = Visitと指定します。この指定により、データ列Visitをy軸として扱います。データ列Visitには、Strongly agree, Agree, Neutral, Disagree, Strongly disagreeという回答が入っています。各回答の数を集計し、回答ごとに色分けをして作図します。

# 末尾の+を忘れないで下さい。

# 帯グラフにおける、作図に用いるデータフレームとデータの指定、および帯グラフの指定;データ列に入っている各項目の数を集計して1つの図を描く場合

geom_bar() +

# 描く図として、まずは帯グラフを指定します。

# 末尾の+を忘れないで下さい。

# 帯グラフにおける、作図に用いるデータフレームとデータの指定、および帯グラフの指定;データ列に入っている各項目の数を集計して1つの図を描く場合

coord_polar(theta = "y", direction = - 1) +

# 円グラフに変換します。

# theta = "y"と指定し、y軸(fill)として指定したVisitを描くようにします。yを""で囲みます。

# direction = - 1は、町に行きたいかどうかへの回答(Strongly agree等)を時計回りに配置するという指定です。データの並び順で指定した順番で時計回りに配置します。これを省略すると反時計回りに配置されます。

# 末尾の+を忘れないで下さい。ただし、以降の命令文を省略する場合は+を付けず、「coord_polar(theta = "y", direction = - 1)」とします。

# 帯グラフの円グラフへの変換

# 省略してもよい命令文

# 以降の命令文を省略するとデフォルトで自動で描きます。

labs(x = "", y = "Intention to Visit") +

# 図の名称をIntention to Visitにします。x軸の名称は描かず、y軸の名称をIntention to Visitと指定します。名称を""で囲みます。x, yは小文字です。

# x軸・y軸の名称の指定

theme_void() +

# 図の背景色を白にします。余計な軸等も描かせないため、theme_void()を指定します。

# 図のデザインの指定

theme(axis.title.x = element_text(size = 18))

# 図の名称(Intention to Visit)の文字の大きさを18に指定します。axis.title.xであってaxis.title.yではないので注意してください。

# x軸・y軸の文字の大きさと書き方の指定

各回答の割合の計算

# 出来上がった図(画面3-1)をPowerPoint等に読み込んで加工するために、各回答の割合を計算します。そして(画面3-2)のような図に加工します。PowerPoint等への図の読み込み方は、図の保存・コピーの仕方を参照して下さい。

prop.table(table(d$Visit))

# データフレームdのデータ列Visitに入っている各回答の割合を計算します。

# 各データの割合の計算

このページの文頭に戻る

2.2. 帯グラフの作図

 帯グラフの作図の仕方を説明します。画面2のデータを使って、○○町に観光に行きたいかどうかの回答分布(画面4-1, 4-2)を作図します。

画面4-1

画面4-2

 Rでは画面4-1を作図します。この図を、PowerPoint等に読み込んで画面4-2に加工します(Rでもこうした加工は出来るのですが、難しいので、PowerPointでやってしまいましょう)。日本語の論文・プレゼンテーションならば説明文も日本語にします。英語部分は白く塗りつぶすなり切り取るなりして、そこに日本語を書いて下さい。回答(「強くそう思う」等)も帯グラフの中に書き込みます。

 作図の前に、回答の並び順を指定しておきます。横棒の帯グラフにするので、円グラフのときとは逆の順番にします。

データの並び順の指定

d$Visit <- factor(d$Visit, levels = c("Strongly disagree", "Disagree", "Neutral", "Agree", "Strongly agree"))

# 回答の並び順を指定します。データフレームd中のデータ列Visitに、○○町に観光に行きたいかどうかの回答の名称が入っています。並べたい順番に回答の名称を書きます。回答は文字情報なので、回答の名称を""で囲みます。

# d$Visitの中身を上書きするためにd$Visitに再格納します。

# この命令を実行しないとアルファベット順に並びます。

# データの並び順の指定

 では作図をします。

帯グラフの作図;データ列に入っている各項目の数を集計して1つの図を描く場合

# 命令文が続く場合には+で繋げ、最後の命令文の後には+を付けません。

# 必須命令文

ggplot(d, aes(x = "", fill = Visit)) +

# データフレームdを指定します。

# 1つの図を描く場合はx軸を指定しません。x = ""とします。xは小文字です。""の中は空です。

# fill = Visitと指定します。この指定により、データ列Visitをy軸として扱います。データ列Visitには、Strongly agree, Agree, Neutral, Disagree, Strongly disagreeという回答が入っています。各回答の数を集計し、回答ごとに色分けをして作図します。

# 末尾の+を忘れないで下さい。

# 帯グラフにおける、作図に用いるデータフレームとデータの指定、および帯グラフの指定;データ列に入っている各項目の数を集計して1つの図を描く場合

geom_bar(position = "fill") +

# 描く図として帯グラフを指定します。position = "fill"と指定することで、百分率による作図にします。fillを""で囲みます。この命令文を省略してgeom_bar()すると、各回答の絶対数で作図します。

# 末尾の+を忘れないで下さい。

# 帯グラフにおける、作図に用いるデータフレームとデータの指定、および帯グラフの指定;データ列に入っている各項目の数を集計して1つの図を描く場合

scale_y_continuous(labels = percent) +

# y軸の目盛りをパーセント表記にします。scalesをRに読み込んでおかないとこの命令文を実行できません。この命令文を実行しないと0から1の率で表記します。

# 末尾の+を忘れないで下さい。ただし、以降の命令文を省略する場合は+を付けず、「scale_y_continuous(labels = percent)」とします。

# 回答割合の目盛りの表記の指定

# 省略してもよい命令文

# 以降の命令文を省略するとデフォルトで自動で描きます。

coord_flip() +

# 横棒の帯グラフにします。この命令文を実行しないと縦棒の帯グラフになります。

# 横棒か縦棒かの指定

guides(fill = guide_legend(reverse = TRUE)) +

# 図本体右横の凡例の並びを、データの並び順で指定したものと逆順にします。上から、Strongly agree, Agree, Neutral, Disagree, Strongly disagreeの順に並びます。この指定をしないと、Strongly disagree, Disagree, Neutral, Agree, Strongly agreeの順番(データの並び順で指定した順番)に並びます。図本体での並びと合うように、逆順にするかしないかを決めて下さい。

# 凡例の並び順の指定

labs(x = "", y = "Percent") +

# 縦軸(横棒にしているので実はx軸)の名称は書かず、横軸(実はy軸)の名称をParcentにします。名称を""で囲みます。x, yは小文字です。

# x軸・y軸の名称の指定

theme_classic() +

# 図の背景色を白にします。

# 図のデザインの指定

theme(
axis.title.x = element_text(size = 18),
axis.text.x = element_text(size = 12)
)

# 文字の大きさを指定します。横軸(横棒にしても、なぜかこちらは横軸がx軸のままです)の名称(axis.title.x)の文字の大きさを18に、目盛り(axis.text.x)の文字の大きさを12に指定します。縦軸(これもy軸のまま)の名称と目盛りは書かないので、それらの文字の大きさも指定しません。

# x軸・y軸の文字の大きさと書き方の指定

各回答の割合の計算

# 出来上がった図(画面4-1)をPowerPoint等に読み込んで加工するために、各回答の割合を計算します。そして(画面4-2)のような図に加工します。PowerPoint等への図の読み込み方は、図の保存・コピーの仕方を参照して下さい。

prop.table(table(d$Visit))

# データフレームdのデータ列Visitに入っている各回答の割合を計算します。

# 各データの割合の計算

このページの文頭に戻る