選んだ列の行だけを足したい
たくさん列があって、バラバラに位置している変数たちの値を合計したいとき
例えば↓の表のうち、aa,vv,ew,ss,の列だけを合計した変数を作りたいとします
解決策
sample.R
library(dplyr)
df <- data.frame(ID = c("AA","BB","CC"),
a1 = c(NA,2,3),
aa = c(1,NA,6),
cc = c(NA,2,2),
d4 = c(NA,6,NA),
vv = c(NA,2,9),
dd = c(NA,2,2),
ew = c(3,2,NA),
ss = c(NA,5,3),
kk = c(6,NA,NA)
)
# 合計したい変数名をベクトルで用意する
namelist <- c("aa","vv","ew","ss")
# one_ofで選択して行を足す
df_added <- df %>%
mutate(sum_row = select(., one_of(namelist)) %>%
rowSums(na.rm = T))
# > df_added
# ID a1 aa cc d4 vv dd ew ss kk sum_row
# 1 AA NA 1 NA NA NA NA 3 NA 6 4
# 2 BB 2 NA 2 6 2 2 2 5 NA 9
# 3 CC 3 6 2 NA 9 2 NA 3 NA 18
このくらいの列数だとあまり大変ではないですが、
合計したい列数が多いときは,select(., one_of())
からrowSums
につなげる書き方は便利かなと思いました
詰まった時の助けになれば幸いです
もっと良い方法があれば、是非ご教示ください!