这是一个计算CV置信区间的例子,用EnvStats软件包计算,用bootstrap with slipper软件包计算。
require(EnvStats)
require(devtools)
devtools::install_github('jtleek/slipper')
require(slipper)
iris %>%
slipper_ci(EnvStats::cv(Sepal.Length),B=100, lower=0.025, upper=0.975)现在我需要使用group_by和几个像这样的变量进行相同的计算。但它不起作用。
cv_ic <- iris %>%
group_by(Species) %>%
summarise_at(vars(Sepal.Length,Sepal.Width,Petal.Length)), slipper_ci_f(EnvStats::cv(vars(Sepal.Length,Sepal.Width,Petal.Length)))发布于 2020-12-03 23:37:47
slipper_ci()的第一个参数需要是一个数据帧,它不能在summarise()中获取它。下面的方法似乎是可行的:
library(tidyverse)
cv_ic <-
iris %>%
group_by(Species) %>%
summarise(across(everything(),
~ slipper_ci(as.data.frame(.x),
cv(.x),
B = 100,
lower = 0.025,
upper = 0.975)),
.groups = "keep"
)发布于 2020-12-03 23:39:45
我无法安装slipper包。
我不认为您必须将vars(Sepal.Length,Sepal.Width,Petal.Length)传递给函数cv。
一个purrr风格的函数应该很好,比如
cv_ic <- iris %>%
group_by(Species) %>%
summarise_at(vars(Sepal.Length,Sepal.Width,Petal.Length)), ~slipper_ci_f(EnvStats::cv(.x)))我还建议您使用旨在替换*_at/if的across函数。
cv_ic <- iris %>%
group_by(Species) %>%
summarise(across(c(Sepal.Length,Sepal.Width,Petal.Length), ~slipper_ci_f(EnvStats::cv(.x))https://stackoverflow.com/questions/65127242
复制相似问题