【R言語】一つのセルに複数回答の選択肢が記録されているデータのRでの処理方法:Pythonのコードを参考にR言語に翻訳してみました:How to break out Multi-Answer responses into separate cells
アンケートの複数回答などで、下図の左端の列のように一つのセルに回答の選択肢が記録されている場合があります。そのようなデータを、上の図の右6列のように、複数回答の選択肢ごとに「1-0」のデータに変換する処理をする必要があったりします。Pythonで処理しているコードがありましたが、R言語のコードが見つかりませんでした。下記のサイトのPythonのコードを参考にさせていただき、R言語で処理できるようにしてみました。たどたどしいR言語による翻訳ですが、備忘録として記録しておきます。選択肢ごとに論理値の回答を「1-0」に変換して行列の形にするところをもっと簡単にできるのではないかと思いますが、何とか無理やり処理しています。ツイッターデータのツイートに含まれるハッシュタグリストの処理にも使えそうなのでR言語のコードにしてみました。↓こちらの処理をR言語でできるようにしてみました。【R言語による複数回答データの処理】sample <- c('Japan,China,Korea','China,Korea,America,Germany,France','America,Germany,France','Japan,China,Korea,America','China,America,Germany,France','Germany,France','China,America')df_sample <- as.data.frame(sample)colnames(df_sample) <- '複数回答'df_sampleanswers <- strsplit(df_sample$複数回答, ",")answers_list <- unlist(answers)answers_list <- unique(unlist(answers))answers_listma_df <- NULL for (i in 1:length(answers)) { for (j in 1:length(answers_list)) { tempanswer <- answers_list[j] %in% answers[[i]] ma_df <- rbind(ma_df,tempanswer) } }ma_dfdm <- ma_df*1ma_dfdmslrnum1 <- length(answers_list)df_ma <- NULLfor (i in 1:slrnum1) {tempma <- ma_dfdm[seq(i,nrow(ma_dfdm),slrnum1), ]df_ma <- cbind(df_ma,tempma)}colnames(df_ma) <- answers_listdf_madf_macomp <- cbind(df_sample,df_ma) df_macomprownames(df_macomp) <- NULLdf_macomp############END#################################【下記は部分的に改良したパターンです:論理値のリストからダミー変数行列を作成する部分をより単純化しています:結果は同じです】################################################ma_df <- NULL for (i in 1:length(answers)) { for (j in 1:length(answers_list)) { tempanswer <- answers_list[j] %in% answers[[i]] ma_df <- append(ma_df,list(tempanswer)) } }storage.mode(ma_df) <- "integer"mamatrix <- matrix(ma_df, nrow=length(answers_list), ncol=length(answers))mamatrixt <- t(mamatrix)ma_dfdm01 <- as.data.frame(mamatrixt) colnames(ma_dfdm01) <- answers_listdf_macomp <- cbind(df_sample,ma_dfdm01) df_macomp-----------------------------------------------------------------------------【下記のコードで「1」を選択肢の文字列に置き換えることができます。結果は下図のようになります。】df_matxt <- NULLqmanamelist <- NULLfor (i in 1:length(answers_list)) {anstxt <- answers_list[i]df_matxt0 <- ma_dfdm01[,i]qmatemp <- df_matxt0 %>% str_replace_all(.,"1",anstxt)df_matxt <- rbind(df_matxt,qmatemp) qmaname <- assign(paste0("q_",i),paste0("qma_",i))qmanamelist <- rbind(qmanamelist,qmaname) }df_matxtt <- t(df_matxt)colnames(df_matxtt) <- t(qmanamelist[,1])df_matxttdf_macomp1 <- cbind(df_sample,df_matxtt) df_macomp1-----------------------------------------------------------------------------------------------------------------------------------------------------------AQUOS sense3 lite+Rakuten UN-LIMITプランセット(事務手数料3300円込)【22000円相当のポイント還元】価格:31280円(税別、送料別)(2020/7/15時点)楽天で購入ついに、AQUOS sense3 liteも高額ポイントの対象になりました。マイナンバーカードの読み取りに対応している機種です。----------------------------------------------------------------------------------Galaxy A7+Rakuten UN-LIMITプランセット(事務手数料3300円込)【15000円相当のポイント還元】価格:22000円(税込、送料無料) (2020/5/31時点)楽天で購入↑楽天市場店で購入すればよかったと思います:アマゾン・プライム・ビデオはHD 1080Pで視聴できます:有機ELなので、黒がきれいです:ヘッドホンでのドルビーアトモスに対応しています。-------------------------------------------------------------------------↓楽天市場以外の有名ストアの利用でも楽天ポイントが貯まります。--------------------------------------------------------------------------------------------------------------------------------------【ダッシュボード「COVID-19 Transition Graphs」を試作】こちらは、ジョンズ・ホプキンス大学のデータを利用したダッシュボードです。中国本土以外の地域への感染が拡大しているため、国別、地域別の感染者数の推移を簡単に確認できるダッシュボードを試作しています。随時、ページを追加しています。グラフのデータは、右上部分の操作でダウンロードすることができます。アメリカの「地域別の変数」を前処理して、「州別」での推移をグラフ化できるようにしました。また、州コードのフィールドを作成してコロプレス地図も作成しています。楽天ブログでは「iframe」タグが使えないので、Bloggerのページから利用できるようにしています。無料で利用できる、グーグルの「データポータル」のダッシュボードです。データさえあれば、簡単に作成できます。「国」別、「地域」別に日ごとの感染者数の推移を見ることができます。↓ダッシュボードの試作です。下記リンクのページから利用できます。ジョンズ・ホプキンス大学の「JHU CSSE」の「Covid19 Daily Reports」のデータを利用しています。 EdgeブラウザやIEブラウザなど、Chromeブラウザ以外での利用の場合はうまく表示されないことがあるようです。↓上記のダッシュボードのデータの出所のサイトです。マップがメインのダッシュボードです-----------------------------------------------------------------------------------------↓日本のインフルエンザの「定点当たり報告数」をグラフ化できるダッシュボードを試作。都道府県別にグラフ化可能です。--------------------------------------------------------------------------★おすすめの記事 ◆How Windows Sonic looks like.:Windows Sonic for Headphonesの音声と2chステレオ音声の比較:7.1.2chテストトーンの比較で明らかになった違い:一目で違いがわかりました----------------------------------------------------------------------------------------------------------