根据R中的分组变量计算概率

时间:2015-08-05 21:14:48

标签: r probability

我需要根据一些分组变量计算响应的概率(df $ C),然后将输出写回df。

作为我的数据的一个例子

A B C
1 1 1
2 1 0
3 1 1
1 2 0
2 2 1
3 2 1

所以最终我需要价值的平均概率' 1'出现在df $ C中,df $ A中的每个值。 df $ A值在分组变量df $ B中重复。 任何帮助将不胜感激

2 个答案:

答案 0 :(得分:0)

您可以使用dplyr。在您的示例中,A和B列的每个分组中只有一个样本,因此结果列与C列相同。

library(dplyr)

dat %>% group_by(B, A) %>%
  mutate(res = mean(C==1))
#   A B C res
# 1 1 1 1   1
# 2 2 1 0   0
# 3 3 1 1   1
# 4 1 2 0   0
# 5 2 2 1   1
# 6 3 2 1   1

数据

dat <- structure(list(A = c(1L, 2L, 3L, 1L, 2L, 3L), B = c(1L, 1L, 1L, 
2L, 2L, 2L), C = c(1L, 0L, 1L, 0L, 1L, 1L), res = c(0.5, 0.5, 
1, 0.5, 0.5, 1)), .Names = c("A", "B", "C", "res"), row.names = c(NA, 
-6L), class = "data.frame")

答案 1 :(得分:0)

由于我开始喜欢基础R解决方案,这是我的:

df1 <- split(df, list(df$A, df$B))
pr <- lapply(df1, function(x) mean(x$C == 1) )
df1 <- unsplit(df1, list(df$A, df$B))
df1$pr <- unlist(pr)
df1
A B C pr
1 1 1 1  1
2 2 1 0  0
3 3 1 1  1
4 1 2 0  0
5 2 2 1  1
6 3 2 1  1