查找多个测试中表示的组

时间:2018-06-04 04:15:10

标签: r dataframe unique

在R数据帧中,我有三对条件之一发生的事件对,并希望找到在每个条件中出现的那些对。例如:

label1   label2   factor  value
 bob      ted        A     4
 bob     carol       A     3
 ted     carol       A     2
 bob      ted        B     3
 ted     carol       B     4
 bob      ted        C     2
 bob     carol       C     9
 ted     carol       C     6

如何获得所有三个因子中具有条目的对的平均值?

bob      ted         (4+3+2)/3 = 3
ted     carol        (2+4+6)/3 = 4

没有计算出这对" bob"并且" carol",因为该对没有因子B的值。主要问题是如何识别那些在每个因子中具有值的对。

1 个答案:

答案 0 :(得分:2)

使用dplyr,我们可以group_by label1label2并仅过滤那些all值为“A”,“B”和“C”然后选择这些组中的mean

library(dplyr)
df %>%
  group_by(label1, label2) %>%
  filter(all(c("A", "B", "C") %in% factor)) %>%
  summarise(avg = mean(value))

# label1 label2   avg
#  <fct>  <fct>  <dbl>
#1 bob    ted     3.00
#2 ted    carol   4.00

或者,如果我们不想对这些值进行硬编码,我们可以先获得unique

unique_value <- unique(df$factor)

df %>%
  group_by(label1, label2) %>%
  filter(all(unique_value %in% factor)) %>%
  summarise(avg = mean(value))