найти группы, представленные в нескольких тестах - PullRequest
0 голосов
/ 04 июня 2018

В 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

Ничего не вычисляется для пары "Боб" и "Кэрол"", потому что эта пара не имеет значения для фактора B. Главный вопрос состоит в том, как идентифицировать те пары, которые имеют значения в каждом из факторов.

1 Ответ

0 голосов
/ 04 июня 2018

С помощью dplyr мы можем group_by label1 и label2 и фильтровать только те группы, которые имеют 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))
...