【发布时间】:2021-07-08 06:02:31
【问题描述】:
我正在尝试使用此数据框创建一个新的数据框,其中包含每个变量的平均值、标准差 (sd)、标准误差 (se) 和置信区间 (ci)。
pct.df <- structure(list(group = c("a", "a", "a", "b", "b", "b"), gender = c("male",
"female", "male", "female", "male", "female"), var_a = c(33.3333333333333,
16.6666666666667, 50, 50, 50, 33.3333333333333), var_b = c(50,
75, 50, 75, 75, 75), var_c = c(50, 75, 75, 100, 75, 75), var_d = c(50,
25, 0, 25, 50, 50), var_e = c(25, 0, 50, 0, 50, 25), var_f = c(25,
25, 0, 50, 50, 25), var_g = c(25, 25, 0, 50, 50, 25), var_h = c(25,
25, 0, 50, 50, 25), avg = c(35.4166666666667, 33.3333333333333,
28.125, 50, 56.25, 41.6666666666667)), class = "data.frame", row.names = c(NA,
-6L))
我想比较 A 组和 B 组每个变量的平均值(即 val_a 到 val_h 和 avg)。
我目前知道如何计算平均值。
sum.df <- pct.df %>%
group_by(group) %>%
summarise_if(is.numeric, mean) %>%
pivot_longer(cols = -group, names_to = "Variable")
但是,我也试图在同一数据框中获取每个 var_ 的 sd、se 和 ci。
我尝试使用来自https://www.r-graph-gallery.com/4-barplot-with-error-bar.html 的类似东西来获得我想要的东西。
my_sum <- data %>%
group_by(Species) %>%
summarise(
n=n(),
mean=mean(Sepal.Length),
sd=sd(Sepal.Length)
) %>%
mutate( se=sd/sqrt(n)) %>%
mutate( ic=se * qt((1-0.05)/2 + .5, n-1))
但我无法让它发挥作用(由于缺乏对如何使用多个变量来处理它的理解)。我是 R 新手,如果有任何建议或替代方法,我将不胜感激。
注意 - 理想情况下是这样的输出?
group Variables mean sd se ci
1 a var_a 38 16 22 54
2 a var_b 69 24 45 93
3 a var_c 75 20 55 95
4 a var_d 44 12 32 56
5 a var_e 31 24 7 55
6 a var_f 38 14 24 52
7 a var_g 38 14 24 52
8 a var_h 38 14 24 52
9 a AVG 46 14 32 60
10 b var_a 58 29 29 87
11 b var_b 81 12 69 93
12 b var_c 88 14 74 102
13 b var_d 56 31 25 87
14 b var_e 56 31 25 87
15 b var_f 56 31 25 87
16 b var_g 56 31 25 87
17 b var_h 56 31 25 87
18 b AVG 64 25 39 89
【问题讨论】: