在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的值。主要问题是如何识别那些在每个因子中具有值的对。
答案 0 :(得分:2)
使用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))