データ穴リストのブログ

すべては喰いっぱぐれないために

そろそろリストに手を出したい(たぶん2年くらい言ってる)

どうも、おじさん@低浮上です。

最近はRばかり触っていられる状況でもなくなってきて、 ちゃんと政治せえや、という政治力により慣れない政治を意識高めワードを用いながらごまかそうと画策中です。

さて、そんななか、ますますRでの分析ライフをサクサクしていきたいわけで、 今までなかなか手が出てなかったリスト型についても勉強していきたい所存です(しているとは言ってない)。

というのも、相変わらずslackでは教えて厨上級者として時たま聖人たちに質問を投げかけているのですが、 僕の好きなggplotオブジェクトを量産する際に華麗にpurrrを使われた式を拝見して、 こんなawesomeを少しでも書ければ…僕の仕事も捗るはず…!

ということで、以下を見ながらいろいろやってみようと思った次第です。

speakerdeck.com

…で、これをもとに考えてわからんなぁと思ったコードを以下に載せようと思ってたんだけど、 読んでみたらこれはdplyrの操作についてじゃね?

書いてみて「あーこれ記事ネタにしよー」と思ったのが数週間前だったんだけど、 そのころの僕はいったい何を考えていたのか全く分からない。 ちょっともうわかんないからそのまま載せよう(こんなのばっかり)

# テストデータ
a1 <- c("A","B","C")
a2 <- c("りんご","みかん","いちご", NA)
a3 <- c(0,1,10,100)
a4_1 <- c("好き", NA)
a4_2 <- c("食べたことがある", NA)
a4_3 <- c("買ったことがある", NA)

test_dat <- data.frame(a1 = sample(a1, 10, replace = TRUE),
                       a2 = sample(a2, 10, replace = TRUE),
                       a3 = sample(a3, 10, replace = TRUE),
                       a4_1 = sample(a4_1, 10, replace = TRUE),
                       a4_2 = sample(a4_2, 10, replace = TRUE),
                       a4_3 = sample(a4_3, 10, replace = TRUE)
                       )

# ↓これダメだった

# a4_1~3のテキストのある部分を1にしたい。ついでにNAを0にしたい(けど他のa1・a2は変換したくない)
# out <- test_dat %>% mutate_if(is.factor, as.numeric) %>% mutate_if(is.na, 0)


# 素直にatを使うべき…?
require(tidyverse)
out <- test_dat %>% mutate_at(4:6, as.numeric)

colnames(out)[4:6] <- as.character(map(test_dat[4:6], levels))

out[is.na(out) & is.numeric(out)]<-0

とりあえず次の記事で教えていただいたシャキッとした書き方は載せるとして、 ここで何がしたかったかってえとたぶんアンケートデータをMCAするときの前処理みたいなことをしたかったはず。

まぁ、とりあえずいいか。*1

*1:そんなんだから前回のflexdashboardもRPubsまで持ってったけどちゃんと表示されてないってのに。。。