Я пытаюсь создать таблицу, которая показывает N (количество наблюдений), процентную частоту (ответов> 0), а также нижний и верхний доверительные интервалы для процентной частоты, и я хочу сгруппировать это по типу.
Пример данных
dat <- data.frame(
"type" = c("B","B","A","B","A","A","B","A","A","B","A","A","A","B","B","B"),
"num" = c(3,0,0,9,6,0,4,1,1,5,6,1,3,0,0,0)
)
Ожидаемый результат (с заполненными значениями):
Type N Percent Lower 95% CI Upper 95% CI
A
B
Попытка
library(dplyr)
library(qwraps2)
table<-dat %>%
group_by(type) %>%
summarise(N=n(),
mean.ci = mean_ci(dat$num),
"Percent"=n_perc(num > 0))
Это сработало, чтобы получить N и процентную частоту, но вернуло ошибку: «Столбец должен иметь длину 1 (итоговое значение), а не 3», когда я добавил в mean_ci
Второй код, который я пробовал, нашел здесь :
table2<-dat %>%
group_by(type) %>%
summarise(N.num=n(),
mean.num = mean(dat$num),
sd.num = sd(dat$num),
"Percent"=n_perc(num > 0)) %>%
mutate(se.num = sd.num / sqrt(N.num),
lower.ci = 100*(mean.num - qt(1 - (0.05 / 2), N.num - 1) * se.num),
upper.ci = 100*(mean.num + qt(1 - (0.05 / 2), N.num - 1) * se.num))
# A tibble: 2 x 8
# type N.num mean.num sd.num Percent se.num lower.ci upper.ci
# <fct> <int> <dbl> <dbl> <chr> <dbl> <dbl> <dbl>
#1 A 8 2.44 2.83 "6 (75.00\\%)" 1.00 7.35 480.
#2 B 8 2.44 2.83 "4 (50.00\\%)" 1.00 7.35 480.
Это дало мне вывод, но доверительные интервалы не логичны.