2021年10月12日 更新

Rでパラデータの前処理

gettyimages (2111)

アンケートの分析の際、回答データだけでなくパラデータを使って分析したいということがあります。

パラデータというのは、回答に要した時間、回答に使った機器(パソコンか、スマートフォンか等)などのように、「調査データを取得するプロセスのデータ」のことをいいます。欧米の研究者の中では、特に調査・分析手法研究の観点からパラデータの利用が盛んになっているようです。(cf.『社会と調査 第18号 特集 パラデータの活用に向けて』 2017 社会調査協会)

パラデータの分析については次回以降にご紹介したいと思いますが、パラデータを扱うときは、まずその前処理、分析に適した変数に変換するのに手間がかかることが多いです。

そこで、今回はRを使ったパラデータの前処理の一例をご紹介します。

使用したデータの形式は、マーケティングアプリケーションズ社のMApps forSurveyで取得したweb調査のパラデータ形式です。(セルフリサーチ用のSurveroidとは異なる、リサーチ会社向けのアンケートツールです)
パラデータ

パラデータ

上手は取得したパラデータです。それぞれ変数の内容は、以下のとおりです。
MID=回答者ID
START=回答を開始した日時
END=回答を完了した日時
TIME=回答に要した時間
UserAgent=回答に使われたデバイス(ブラウザ)のユーザーエージェント
IPAddress=回答者がアクセスしてきたipアドレス

まず、データをRに読み込んだうえで、START、ENDはキャラクターデータ、つまり単なる文字列なので、これを日時として扱えるように、strptime関数を使ってデータ変換します。

(R script)
library(dplyr)
df$START<-strptime(df$START,format="%Y/%m/%d-%H:%M:%S")
df$END<-strptime(df$END,format="%Y/%m/%d-%H:%M:%S")


分析上は、開始日時そのものというより、初期回答者か後期回答者かで回答に差異があるか、等を調べたいので、STARTの一番早い人を0とし、そのあとは開始日時の差を秒で表すstart_timeという変数を作ることにします。また、start_timeで回答者を10分位し、コードを振ります(変数名 st_quantile)。1が最初期回答者、10が最末期回答者になります。

このほかに、昼間回答者/夜間回答者、とか、平日回答者/土日回答者などといった変数もSTARTやENDの日時情報から作成して使えそうです。

また、回答に要した時間(TIME)は秒単位を変換します。TIMEから作ってもいいのですが、STARTとENDの差を取った方が簡単なので、それを上書きします。

(R script)
df$start_time<-as.numeric(df$START-min(df$START),units="secs")
df<-df%>%mutate(st_quantile = ntile(start_time, 10))
df$TIME<-as.numeric(df$END-df$START,units="secs")


これで、以下のようなデータに変換、追加されました。
変換された回答時刻、時間データ

変換された回答時刻、時間データ

ユーザーエージェントは、uaparserjsというライブラリーを使って、簡単にブラウザやデバイスのファミリーを取得することができます。

(R script)
library(uaparserjs)
df<-df%>%mutate(ua_parse(UserAgent))


次のようなデータが追加できました。ここに示したのはアプリ(ブラウザ)、OS、機器のファミリー(大分類)情報ですが、バージョンなどの情報も追加できます。
ユーザーエージェントから得られたアプリ、OS、デバイス...

ユーザーエージェントから得られたアプリ、OS、デバイスファミリー情報

最後に、IPアドレスについても処理してみます。
ドメイン情報を一つ一つ参照しに行くので、サンプルサイズが大きいと時間がかかることもありますが、iptoolsというライブラリでドメイン名に変換することができます。(ip_to_hostnameという関数はリスト形式で結果を返すため、データフレームに直してからデータに追加しています)

(R script)
library(iptools)
host<-ip_to_hostname(df$IPAddress)
host<-as.data.frame(do.call(rbind,host))
colnames(host)<-"hostname"
df<-cbind(df,host)


下図のhostname変数がipアドレスから取得したドメイン名のデータです。参照できなかったものは数値のipアドレスがそのまま格納されています。

もうひと手間かけて、後の方の親ドメイン名だけに変換したいところですが、これは少し工夫が必要そうですね。
ipアドレスからホスト名への変換

ipアドレスからホスト名への変換

アンケートのパラデータの前処理について、Rを使って簡単に済ませる方法を、少しだけご紹介しました。

10 件

関連する記事 こんな記事も人気です♪

アンケートは小さく、データは大きく

アンケートは小さく、データは大きく

ネットリサーチではアンケートのボリュームを小さくする方向性が求められています。 ・マルチデバイスで回答できるようにする ・回答環境に配慮する ・デバイス環境に対応したコミュニケーション ・無駄を省いたシンプル設計 ・まずは自分で回答してみる
KOJI.A | 203 view
【独自調査】生活者の購買行動を引き起こさせるために必要なこととは?

【独自調査】生活者の購買行動を引き起こさせるために必要なこととは?

コロナ禍も収束の気配を見せ始め、人々の行きかいも活発になってきているように思われます。沈んでいた経済活動も復調の兆しを見せ始める中、生活者はどのように購買行動を起こしているのでしょうか?今回はその実態について、15歳から60代以上の600名にアンケートを実施し、深掘りしてみました。
【独自調査】成年年齢引き下げに対するティーン世代の意識から見えてきたこととは?

【独自調査】成年年齢引き下げに対するティーン世代の意識から見えてきたこととは?

成年となる年齢の引き下げる示した「民法の一部を改正する法律」が2022年4月1日に施行され、成年年齢が18歳となりました。それに伴う様々な話題や課題が取り上げられ議論を呼んでいますが、当の10代後半のティーン世代はどのように捉えているのでしょうか?またそこから見えてきた問題とは?
イベントアンケートの成果を最大化!回収率を向上させるアンケート作成の方法までテンプレート付きで解説。

イベントアンケートの成果を最大化!回収率を向上させるアンケート作成の方法までテンプレート付きで解説。

今回のコラムでは、イベント運営において有益な情報を得ることができるアンケートの実施方法について解説します。イベント運営ならではの作成におけるコツや、回収率を向上させるための方法、設問のテンプレート等を交えて紹介していきます。
大石 | 153 view
外国人観光客の受け入れ再開!続くマスク生活に生活者の本音とは?

外国人観光客の受け入れ再開!続くマスク生活に生活者の本音とは?

6月10日は県民割などのGoToキャンペーンの開始や、外国人旅行者の本格的な受け入れの再開など、withコロナ生活に向けて加速しているように思われます。新型コロナウイルスへの対策方針が大きく変化しているように思われる昨今ですが、実際の生活者はどのような思いを抱いているのでしょうか? 今回は全国の都道府県の20代以上の男女500名を対象にアンケートを実施しました。その結果をご紹介します!

この記事のキーワード

この記事のキュレーター

KOJI.A KOJI.A
Surveroid
Surveroid