У меня есть фрейм данных со многими шкалами, и я хочу вычислить среднее значение и сумму каждого участника, а также общее среднее значение и общую сумму для каждой шкалы . Я не могу понять, как нам pmap_dbl получить мои результаты. Я пытался написать функцию, но она не удалась.
Вот пример данных:
library(tidyverse)
df <- tibble(tep_1 = sample(c(0,1), 5, replace = TRUE),
tep_2 = sample(c(0,1), 5, replace = TRUE),
adarta_1 = sample(c(0,1), 5, replace = TRUE),
adarta_2 = sample(c(0,1), 5, replace = TRUE),
adarta_3 = sample(c(0,1), 5, replace = TRUE),
adarta_4 = sample(c(0,1), 5, replace = TRUE),
adarta_5 = sample(c(0,1), 5, replace = TRUE),
adarta_6 = sample(c(0,1), 5, replace = TRUE))
Вот моя функция, которая не работает. Примечание: эта функция только пытается получить сумму строки, но мне также нужны среднее, среднее значение и стандартное отклонение строки:
column_prefix <- c("tep", "adarta")
my_fun <- function(x, y) {
x %>%
select(starts_with(y)) %>%
rowSums(x, na.rm = TRUE)
}
map2_dbl(.x = df, .y = column_prefix, .f = my_fun)
Error: Mapped vectors must have consistent lengths:
* `.x` has length 8
* `.y` has length 2
И я хочу сделать так, чтобы я мог получить этот вывод с этой функцией :
library(tidyverse)
df <- df %>%
mutate(tep_grand_mean = mean(c(tep_1, tep_2)),
tep_sd = sd(tep_grand_mean),
adarta_grand_mean = mean(c(adarta_1, adarta_1, adarta_2, adarta_3, adarta_4, adarta_5, adarta_6)),
adarta_sd = sd(adarta_grand_mean),
tep_sum = pmap_dbl(select(., starts_with("tep")), sum),
tep_mean = rowMeans(select(., contains("tep")), na.rm = TRUE),
adarta_sum = pmap_dbl(select(., starts_with("adarta")), sum),
adarta_mean = rowMeans(select(., contains("adarta")), na.rm = TRUE))
~~~~~