r - 在 dplyr summarise() 中按组计算上下置信区间
问题描述
我正在尝试制作一个表格,显示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.
这给了我一个输出,但置信区间不合逻辑。
解决方案
的输出mean_ci
是一个长度为 3 的向量。这可能是出乎意料的,因为该包添加了一个打印方法,因此当您在控制台中看到它时,它看起来像一个单个字符值,而不是一个长度 > 1 的数字向量。但是,您可以通过查看str
.
mean_ci(dat$num) %>% str
# 'qwraps2_mean_ci' Named num [1:3] 2.44 1.05 3.82
# - attr(*, "names")= chr [1:3] "mean" "lcl" "ucl"
# - attr(*, "alpha")= num 0.05
总之,输出的每一列的每个元素都需要长度为 1,因此为汇总提供一个长度为 3 的对象以放入单个“单元格”(列元素)会导致错误。一种解决方法是将长度为 3 的向量放在一个列表中,这样它现在是一个长度为 1 的列表。然后您可以使用unnest_wider
将其分成 3 列(从而使表格“更宽”)
library(tidyverse)
dat %>%
group_by(type) %>%
summarise( N=n(),
mean.ci = list(mean_ci(num)),
"Percent"= n_perc(num > 0)) %>%
unnest_wider(mean.ci)
# # A tibble: 2 x 6
# type N mean lcl ucl Percent
# <fct> <int> <dbl> <dbl> <dbl> <chr>
# 1 A 8 2.25 0.523 3.98 "6 (75.00\\%)"
# 2 B 8 2.62 0.344 4.91 "4 (50.00\\%)"
推荐阅读
- php - 如何设置回声输出的样式以显示网格?
- c# - 使用高级选项创建 Hive ODBC 驱动程序
- javascript - LinkButton,如何防止双击“asp:LinkButton”?或第一次单击后禁用“asp:LinkButton”
- java - Firebase 规则 - 只允许用户访问自己的数据
- python-3.6 - 我的不和谐机器人由于某种原因不断断开连接
- selenium - 如何使用 IE11 webdriver 启动 selenium 独立服务器?
- r - 在客户旅程中是否有用于接触点归因的 R 函数?
- javascript - 将内联 javascript 重写为外部函数 - 此参考
- python - nginx下带有wsgi(uwsgi)的python是否有一些小的默认缓存?
- php - 发布具有相似名称和相似值的数组