Rで全部NAの列だけ削除する.その他のNAは0に置換する.
いかにデータ分析していなかったかが,Blogの更新でわかる.
手を動かすのを休むと,どんどんめんどくさがりに傾倒していく私.
ウォーミングアップがてら,こんな話.
こんなふうに,全部NAの行と,ところどころNAが入ったセルがあるとする.
dat <- matrix(c(26,70,10, 28,NA,59, 96,84,35, NA,85,15, 35,50,7, 39,NA,61, 80,81,32, 51,4,92, NA,NA,NA, 70,16,29, 22,4,13, 31,85,56, 51,86,43, NA,NA,NA, 78,59,7, 18,34,33, 32,14,NA, 7,NA,14, 95,25,47, 39,36,63), ncol=3, byrow=T)
こんなdatに対して,NAの入った行を全部削除するならna.omit()すればよろしい.
全部NAの列は削除し,その後でNAを0に置換することを考える.
普通にRのコードを書くと,
dat <- dat[!apply(is.na(dat), 1, all),] dat[is.na(dat)] <- 0
こんな感じ.dplyrチェーンでやろうとすると,
require(tidyverse) dat %>% filter(rowSums(is.na(.)) != ncol(.)) %>% mutate_all(funs(replace(., is.na(.), 0)))
こんな感じ.