关于dplyr Github repo已经存在一些问题,至少有一个相关的SO问题,但是没有一个问题完全覆盖了我的问题 - 我想.
tidyr::separate(我认为)不适合我的情况()有一个特殊情况的答案.do()".这是我的用例:我想计算精确的二项式置信区间
dd <- data.frame(x=c(3,4),n=c(10,11))
get_binCI <- function(x,n) {
rbind(setNames(c(binom.test(x,n)$conf.int),c("lwr","upr")))
}
with(dd[1,],get_binCI(x,n))
## lwr upr
## [1,] 0.06673951 0.6524529
Run Code Online (Sandbox Code Playgroud)
我可以完成这项工作,do()但我想知道是否有一种更具表现力的方式来做到这一点(感觉mutate() 可能有一个.n参数正在讨论总结() ...)
library("dplyr")
dd %>% group_by(x,n) %>%
do(cbind(.,get_binCI(.$x,.$n)))
## Source: local data frame [2 x 4]
## Groups: x, n
##
## x n lwr upr
## 1 3 10 0.06673951 0.6524529
## 2 4 11 0.10926344 0.6920953
Run Code Online (Sandbox Code Playgroud) 上次我询问如何计算每个测量时间(周)的平均分数,对于多个受访者重复测量的变量(procras).所以我的(简化)长格式数据集看起来像下面的例子(这里有两个学生,5个时间点,没有分组变量):
studentID week procras
1 0 1.4
1 6 1.2
1 16 1.6
1 28 NA
1 40 3.8
2 0 1.4
2 6 1.8
2 16 2.0
2 28 2.5
2 40 2.8
Run Code Online (Sandbox Code Playgroud)
使用dplyr我会得到每个测量场合的平均分数
mean_data <- group_by(DataRlong, week)%>% summarise(procras = mean(procras, na.rm = TRUE))
Run Code Online (Sandbox Code Playgroud)
看起来像这样:
Source: local data frame [5 x 2]
occ procras
(dbl) (dbl)
1 0 1.993141
2 6 2.124020
3 16 2.251548
4 28 2.469658
5 40 2.617903
Run Code Online (Sandbox Code Playgroud)
使用ggplot2,我现在可以绘制随时间的平均变化,并通过轻松调整dplyr的group_data(),我也可以获得每个子组的平均值(例如,男性和女性的每次平均得分).现在我想在mean_data表中添加一个列,其中包括每个场合平均得分95%-CIs的长度.
http://www.cookbook-r.com/Graphs/Plotting_means_and_error_bars_(ggplot2)/解释了如何获取和绘制CI,但这种方法似乎一旦我想为任何子组执行此操作就会出现问题,对吧?那么有没有办法让dplyr在mean_data中自动包含CI(基于组大小等)?之后,将新值作为CI绘制到我希望的图表中应该相当容易.谢谢.