r - 从数据帧计算条件/后验概率
问题描述
我有一个包含两列的数据框:消费者 ID 和过程名称。
一个使用者可以有多个过程名称。
鉴于某人已经完成了其他程序,我需要了解某人执行特定程序的可能性。
例子,
Consumer ID, Procedure Name
01, Procedure 01
01, Procedure 02
02, Procedure 01
因此,鉴于某人已经完成了程序 01,他执行程序 02 的概率是 50%。
有谁知道一个包,做到这一点?或者我需要运行一个 Count If 函数?
谢谢!
解决方案
您可以选择那些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
")
推荐阅读
- python - numpy.random.rand(n) 中重复的几率是多少(假设完全随机)?
- ios - Cordova 插件媒体不会在 ios 11.0 和 12.0 上正确触发 onStatus 回调
- c# - JSON.NET 反序列化似乎认为 1000 是 1000.0 从而导致整数转换错误,为什么?
- spring - Hibernate Jpa - 主键(序列)上的约束违规异常
- python - 从 2 列切换值
- r - data.table - 按多个组列选择行
- xslt-2.0 - 从不同节点更改相同的值
- python - 删除 XML 中的容器
- java - 在 android studio 中从 firebase 读取多个孩子
- html - Vue 应用程序,未应用 html 和 body 元素的样式,我使用的是 SCSS