【R言語】dplyrなどデータ整形メモ(NAが一定割合以下の列を抽出など)
データ整形に関する関数のメモ
仕事で使用した関数のメモです。
・NAが一定割合以下の列を抽出
tmp <- df %>% summarise_all( . %>% is.na() %>% sum) %>% #列ごとのNAの総数を集計する gather() %>% #縦持ちに変換 filter( value < nrow(df) *.3 ) #NAが30%以下の列を抽出 df2 <-df %>% select(tmp$key)
・数値だけround関数を適用して小数点切り上げ
df %>% mutate_if(is.numeric, round, digits=0) -> df2 df %>% select(-N) %>% spread(key=tech , value = syoricount) %>% mutate_all(funs(ifelse(is.na(.),0,.))) %>% #naを0に置換 mutate_if(is.numeric, round, digits=0)->df_spread #roundで切り上げ
・列V1から4文字抜き出す
df %>% dplyr::mutate(V2 = substring(V1,1,4) ) ->df2
・列V2に対して文字の一致判定
df2 %>% mutate(V3 = recode(V2, XXXX ="XXX1",YYYY ="YYY2" )) ->df3
・データフレーム中のNAを置換するシンプルな方法
df[is.na(df)] <- 0.01
・列名の全角カッコを半角にする
df %>% setNames(stri_trans_nfkc(names(.))) %>% head(.)
・#分散が0以外の列を選択
data("airquality") data_ar <- airquality data_ar[,apply(data_ar,2,var,na.rm = TRUE) != 0]