如何在几个条件下计算R中的平均值

How to calculate the mean in R with several conditions

我正在尝试计算此数据框的均值并将它们分组到一个故事中!我知道如何在 excel 中使用 averageifs 来做到这一点,但因为我想最终获得标准差和变异系数 (CV),所以我需要在 R 中学习。

现在我只需要平均值。这是我的条件:

我需要一个 table,其中我的时间间隔 "stim_ending_t" 从 1.0 到 3.5 连续排列。对于时间间隔,我需要在计算 "key_resp_2.rt"

的平均值时满足这三个条件

只有图像能见度和音量(V=1 & s=0)

只有声音 (V=0 & s=1)

空白(V=0 & s=0)

The data frame

Expected out come

这将计算 stim_ending_t (6) x 模态 (3) = 18 组均值。

首先我会生成一些数据,例如您的 analysis_vanalysis_a 数据框:

library(dplyr)
library(tidyr)

analysis_v <- data.frame(stim_ending_t = rep(seq(1, 3.5, 0.5), each = 30), 
                         visbility = rep(c(1, 0, 0), 60), 
                         soundvolume = rep(c(0, 1, 0), 60), 
                         key_resp_2.rt = runif(180, 1, 5))

然后我将对象通过管道传输到代码块中:

analysis_v %>% 
  group_by(stim_ending_t, visbility, soundvolume) %>% 
  summarize(average = mean(key_resp_2.rt)) %>% 
  ungroup() %>% 
  mutate(key = case_when(visbility == 0 & soundvolume == 0 ~ "blank", 
                         visbility == 0 & soundvolume == 1 ~ "only_sound", 
                         visbility == 1 & soundvolume == 0 ~ "only_images")) %>% 
  select(-visbility, -soundvolume) %>% 
  spread(key, average)

这导致请求的输出格式:

# A tibble: 6 x 4
  stim_ending_t blank only_images only_sound
          <dbl> <dbl>       <dbl>      <dbl>
1           1    3.28        3.55       2.84
2           1.5  2.64        3.11       2.32
3           2    3.27        3.72       2.42
4           2.5  2.14        3.01       2.30
5           3    2.47        3.03       3.02
6           3.5  2.93        2.92       2.78

您需要使用 analysis_a 重复代码块才能获得这些方法。

感谢您@Matthew Schuelke 的帮助,但是使用您的代码,我每次 运行 代码时都会得到不同的结果。

以下是我用这段代码解决问题的方法:

name of the new data = (name of the data frame without the parentheses) %>%
  group_by(stim_ending_t, visbility, soundvolume, Opening_text) %>%
  summarize(m = mean(key_resp_2.rt),
            sd = sd(key_resp_2.rt),
            coefVar = cv(key_resp_2.rt))

我想要的结果:

stim_ending_t visbility soundvolume Opening_text               m     sd coefVar
          <dbl>     <dbl>       <dbl> <chr>                  <dbl>  <dbl>   <dbl>
1             1         0           0 Now focus on the Image  1.70  1.14    0.670
2             1         0           0 Now focus on the Sound  1.57  0.794   0.504
3             1         0           1 Now focus on the Image  1.62  1.25    0.772
4             1         0           1 Now focus on the Sound  1.84  1.17    0.637
5             1         1           0 Now focus on the Image  3.19 17.2     5.38 
6             1         1           0 Now focus on the Sound  1.59  0.706   0.444