LoginSignup
0
1

More than 3 years have passed since last update.

mutate_allを使って空文字を置換する【R】

Last updated at Posted at 2021-03-27

Rでデータハンドリングをする際に空文字の置換に関する情報が少なかったので記事にしました。
困っている方の参考になれば幸いです。

データ作成

library(tidyverse)
gender <- c("F", "F", "M", "M", "M")
answer_1 <- c('', 'x', '', '', 'x')
answer_2 <- c('x', '', 'x', '', 'x')
answer_3 <- c('', '', '', '', 'x')
df <- data.frame(GENDER=gender
                  , ANSWER_1=answer_1
                  , ANSWER_2=answer_2
                  , ANSWER_3=answer_3)
gender ANSWER_1 ANSWER_2 ANSWER_3
F x
F x
M x
M
M x x x

上記のようにnullではなく空文字が入っている処理の対応に苦戦しました。
もしnaであればmutate_all(~ifelse(is.nan(.),0,.))とすれば良いというのはいくつか見ましたが、空文字の場合どうすればよいのかというのがわからず時間がかかりました。

空文字の置換

is.nan(.)の部分を.==''にすることで対応できました。

df_fix <- df %>%
  mutate_all(~ifelse(.=='',0,.)) 
gender ANSWER_1 ANSWER_2 ANSWER_3
F 0 x 0
F x 0 0
M 0 x 0
M 0 0 0
M x x x

ついでにxを1に変換する処理を追加する場合はこちら

df_fix <- df %>%
  mutate_all(~ifelse(.=='',0,.)) %>%
  mutate_all(~ifelse(.=='x',1,.)) 
gender ANSWER_1 ANSWER_2 ANSWER_3
F 0 1 0
F 1 0 0
M 0 1 0
M 0 0 0
M 1 1 1

個人的にはこちらの記事が参考になりました。

ifelseの使い方を知っていればすぐに解決しそうでした。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1