我正在尝试计算此数据帧的均值并将它们分组为一个故事!我知道如何在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)
答案 0 :(得分:0)
这将计算stim_ending_t(6)x模态(3)= 18组均值。
首先,我生成一些数据,例如您的analysis_v
或analysis_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
重复代码块以获取这些平均值。
答案 1 :(得分:0)
感谢@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