首页 > 解决方案 > 从数据帧计算条件/后验概率

问题描述

我有一个包含两列的数据框:消费者 ID 和过程名称。

一个使用者可以有多个过程名称。

鉴于某人已经完成了其他程序,我需要了解某人执行特定程序的可能性。

例子,

Consumer ID, Procedure Name
01, Procedure 01
01, Procedure 02
02, Procedure 01

因此,鉴于某人已经完成了程序 01,他执行程序 02 的概率是 50%。

有谁知道一个包,做到这一点?或者我需要运行一个 Count If 函数?

谢谢!

标签: r

解决方案


您可以选择那些Consumer_ID已经过程序 1 的 s,为他们是否也有过程序 2 创建一个指标变量,您的概率是这个新指标的平均值。

library(dplyr)

df %>% 
  group_by(Consumer_ID) %>% 
  filter('Procedure 01' %in% Procedure_Name) %>% 
  summarise(had_p2 = 'Procedure 02' %in% Procedure_Name) %>% 
  summarise(p_2_given_1 = mean(had_p2))

# # A tibble: 1 x 1
#   p_2_given_1
#         <dbl>
# 1       0.500

使用的数据:

df <- data.table::fread("
Consumer_ID, Procedure_Name
01, Procedure 01
01, Procedure 02
02, Procedure 01
")

推荐阅读