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

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (77)

我正在尝试计算数据框的方法并将它们分组在一个故事中!我知道如何在excel中使用averageifs但是因为我想最终得到标准差和变异系数(CV)我需要在R中学习

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

我需要一个表格,其中作为我的时间间隔的“stim_ending_t”按行排列在1.0到3.5之间。对于时间间隔,我需要在计算平均值时满足这三个条件,即“key_resp_2.rt”

只有图像可见性和声音体积(V = 1&s = 0)

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

空白(V = 0&s = 0)

数据框

预期结果

提问于
用户回答回答于

这里有一些额外的步骤,因为你想要什么,但这里的主要思想是使用构建组group_by(),计算均值summarize(),然后将数据传播(即,转动)到列中spread()

library(dplyr)
library(tidyr)

data.frame(stim_ending_t = sample(seq(1, 3.5, 0.5), 180, replace = TRUE), 
           visbility = sample(0:1, 180, replace = TRUE), 
           soundvolume = sample(0:1, 180, replace = TRUE), 
           key_resp_2.rt = runif(180, 1, 5)) -> your_data

your_data %>% 
  group_by(stim_ending_t, visbility, soundvolume) %>% 
  summarize(m = mean(key_resp_2.rt)) %>% 
  ungroup() %>% 
  filter(!(visbility == 1 & soundvolume == 1)) %>% 
  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, m)

扫码关注云+社区

领取腾讯云代金券