Психологи работают со шкалами Ликерта почти все время, и скажем, у меня есть этот набор данных:
data <- data.frame(x1 = c(NA,2,4),
x2 = c(NA,3,2),
x3 = c(NA,6,NA))
Я хотел бы использовать RowSums, только если X1, X2 и X3 не пропущены.
Это не сработает, потому что не будет учитываться ни одна переменная с пропущенными регистрами:
data %>%
mutate(total_score = rowSums(select(.,x1:x3), na.rm=F))
И это также не сработает:
data %>%
filter_at(vars(x1:x2), any_vars(!is.na(.))) %>%
mutate(total_score = rowSums(select(.,x1:x3), na.rm=T))
Поскольку это отфильтрует мой набор данных а затем уменьшите количество наблюдений.
Поэтому я хотел бы интегрировать фильтр в mutate.
Я прочитал пост до этого, но я не смог его реализовать.
ps: я бы хотел остаться в среде tidyverse. Спасибо
Мой код:
data <- data.frame(x1 = c(NA,2,4),
x2 = c(NA,3,2),
x3 = c(NA,6,NA))
data %>%
mutate(total_score = rowSums(select(.,x1:x3), na.rm=F))
data %>%
filter_at(vars(x1:x2), any_vars(!is.na(.))) %>%
mutate(total_score = rowSums(select(.,x1:x3), na.rm=T))