Googleフォームで集めたデータ
2021/08/01
COVID-19のあおりで、オンライン講義が増え、質問紙調査もGoogleフォームを用いてオンラインで行うことが多くなってきました。Googleフォームは大変便利ですが、Googleフォームで集めたデータをGoogleスプレッドシートに出力して、それをR(RStudio)で従来のデータフレームとして用いるには、少し工夫が必要になるので、メモを残しておきます。
データの保存形式
基本的には、CSVファイルを推奨しているのですが、Windowsの文字コードとGoogleスプレッドシートの文字コードの関係(*)で、Excelファイルを用いた方が読み込みのトラブルが減りますので、ここではExcelファイルとしてダウンロードして保存することをおすすめします。
Windowsがいい加減にShift-JISを捨ててくれればほとんどのR(RStudio)関係のトラブルはなくなるのに…。
元データだけの保存をおすすめすることは変わりません。解析が進むと、データのサブセットをそれぞれファイルに保存したくなることも多いですが、どのようにサブセットを作ったかは、Rのコードに記述しておいた方が、Reproducibilityが高くなり、後々の見直しに役立ちます。
データの読み込み方
データの読み込みはreadxlパッケージのread_excel()関数を使います。
library(readxl)
dat = read_excel("data/ファイル名.xlsx")
dat = as.data.frame(dat)
ToFactor = c("変数A", "変数B", "変数C")
dat[, ToFactor] = lapply(dat[, ToFactor], factor)
read_excel()関数では、Rのデータフレームではなく、tibble形式として読み込むことになります。時々、今まで普通にやっていた作業で躓くことがあるので、データフレームへの変換も行っています(3行目)。また、Rは、バージョン4.0以降、今までのように文字列をFactorにしてくれません。なので、明示的にFactorに変更することが求められます(4行目、5行目)。Googleフォームでは、回答が文字列で記録されることが多いので、文字列を数値にすることも行いますが、この場合もR 4.0以降では、下記のように変更後の数字を明示的に数値に変更することが求められます。
ToNum = c("変数1", "変数2", "変数3")
dat[, ToNum] = lapply(dat[, ToNum], as.numeric)