One of my favorite things is ...

2021.01.07
XML
カテゴリ: データ分析

​​​​ アンケートの複数回答などで、下図の左端の列のように一つのセルに回答の選択肢が記録されている場合があります。



そのようなデータを、 上の図の右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_sample
answers <- strsplit(df_sample$複数回答, ",")
answers_list <- unlist(answers)
answers_list <- unique(unlist(answers))
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 <- rbind(ma_df,tempanswer) 
  }
 }
ma_dfdm <- ma_df*1
ma_dfdm
slrnum1 <- length(answers_list)
df_ma <- NULL
for (i in 1:slrnum1) {
tempma <- ma_dfdm[seq(i,nrow(ma_dfdm),slrnum1), ]
df_ma <- cbind(df_ma,tempma)
}
colnames(df_ma) <- answers_list
df_ma
df_macomp <- cbind(df_sample,df_ma) 
df_macomp
rownames(df_macomp) <- NULL
​​df_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_list
df_macomp <- cbind(df_sample,ma_dfdm01) 
df_macomp



【下記のコードで「1」を選択肢の文字列に置き換えることができます。結果は下図のようになります。】
df_matxt <- NULL
qmanamelist <- NULL
for (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_matxtt
df_macomp1 <- cbind(df_sample,df_matxtt) 
df_macomp1





​ついに、AQUOS sense3 liteも高額ポイントの対象になりました。マイナンバーカードの読み取りに対応している機種です。​



​​​​​​
[商品価格に関しましては、リンクが作成された時点と現時点で情報が変更されている場合がございます。]

Galaxy A7+Rakuten UN-LIMITプランセット(事務手数料3300円込)【15000円相当のポイント還元】
価格:22000円(税込、送料無料)  (2020/5/31時点)

楽天で購入

↑楽天市場店で購入すればよかったと思います:アマゾン・プライム・ビデオはHD 1080Pで視聴できます:有機ELなので、黒がきれいです:ヘッドホンでのドルビーアトモスに対応しています。

​​


↓楽天市場以外の有名ストアの利用でも楽天ポイントが貯まります。
Rebatesお友達紹介キャンペーン

-------------------------------------------------------------​
​​



-------------------------------------------------------------------------​
​【ダッシュボード 「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テストトーンの比較で明らかになった違い:一目で違いがわかりました










​​





お気に入りの記事を「いいね!」で応援しよう

Last updated  2023.07.08 06:30:39
コメント(0) | コメントを書く


【毎日開催】
15記事にいいね!で1ポイント
10秒滞在
いいね! -- / --
おめでとうございます!
ミッションを達成しました。
※「ポイントを獲得する」ボタンを押すと広告が表示されます。
x
X

© Rakuten Group, Inc.
X
Design a Mobile Site
スマートフォン版を閲覧 | PC版を閲覧
Share by: