在R中整理数据中查找多个组的平均值

时间:2018-04-29 03:32:44

标签: r average tidyverse

我有一个包含研究数据的整洁数据框。 “init_cont”和“family”代表本研究中的不同条件。 init_cont(A,B或C)有三种可能的选项,家族(D或E)有两种可能的选项,产生3x2实验设计。在此示例中,每个参与者必须回答两个不同的问题(在“qnumber”列中指定)。 “值”列表示他们对所提问题的回答。

id  init_cont  family  qnumber  value
1   A          D       1        5
1   A          D       2        3
2   B          D       1        4
2   B          D       2        2
3   C          E       1        4
3   C          E       2        3
4   A          E       1        5
4   A          E       2        2

我正在尝试确定最佳方式(最好在整数范围内),以确定每个问题的平均值,由条件分隔。有6个条件,它们来自init_cont中3个选项的6种组合以及系列中的2个选项。在此数据框中,只有2个问题,但实际数据集有14个。

我知道我可以通过为6个条件中的每个条件创建不同的数据帧然后进一步分解这些条件来为每个问题制作不同的数据帧,然后找到每个数据帧的平均值。必须有更好的方法以更少的步骤执行此操作。

2 个答案:

答案 0 :(得分:1)

使用tidyverse确定每个问题的平均值,并按照family的条件分隔:

data %>% 
  group_by(family) %>% 
  summarize(avg_value = mean(value))

如果您愿意,您甚至可以按照family和第二个(或更多)变量的条件查找每个问题的平均值,例如religion

data %>% 
  group_by(family, religion) %>% 
  summarize(avg_value = mean(value))

编辑1:根据反馈,以下是获取按init_contfamilyqnumber分组的平均值的代码:

data %>%
    group_by(init_cont, family, qnumber) %>%
    summarize(avg_value = mean(value))

查看示例: enter image description here

答案 1 :(得分:0)

我们可以使用aggregate

中的base R
aggregate(value ~ family, data, mean)