! データ行の合計を計算する Rはベクトル単位の計算はとても便利な関数が揃っているが、行単位で演算しようとすると途端に面倒になる。 会計でよく使う、縦計・横計でも同様で、縦計はいろいろできるが横計は辛い。 データ df_sample <- tibble( ID = c("a", "b", "c", "d", "e", "f"), A1 = c(1, NA, NA, NA, NA, NA), A2 = c(NA, 1, NA, NA, NA, NA), A3 = c(NA, NA, 1, NA, NA, NA), B1 = c(NA, NA, NA, 1, NA, NA), B2 = c(NA, NA, NA, NA, 1, NA), B3 = c(NA, NA, NA, NA, NA, 1) ) ! rowSums()は数値型が対象なので項目を選択する rowSums (x, na.rm = FALSE, dims = 1) この場合、xは行列でなければ機能しない。つまりtibbleでは動作しない。 df_sample %>% select(-ID) %>% #文字型の項目を除く mutate(Sum = rowSums(., na.rm = T)) #NAを外す として、数値のみを対象とする。 ! 原理的な方法(各列を足す) > df_sample %>% replace_na(replace = list(A1 = 0, A2 = 0, A3 = 0, B1 = 0, B2 = 0, B3 = 0)) %>% mutate(score = sum(A1:B3)) ! 行列への関数を一括適用する方法 df %>% select_if(is.numeric) %>% apply(1, sum, na.rm = TRUE) ! とりあえず見出している方法 処理 df_sample %>% nest(-ID) %>% # ID以外をまとめて一つのデータの塊dataとする mutate(score = map(data, sum, na.rm=T)) %>% #dataに合計sumを適用(NAを除く)してscoreに代入する unnest() # まとめたdataを復元する