我想根据给定的状态s1,s2,...,s6来计算采取某项行动的概率。但是,我想将此概率作为数据框的另一列附加。我知道如何通过循环遍历表中的每一行然后进行查找来计算这些概率,但是我认为使用向量化解决方案会有所帮助。
我知道经验概率为length(df[(s1==x1 & s2==x2 & ... & s6==x6 & action==a),])/length(df[(s1==x1 & s2==x2 & ... & s6==x6),])
,但我需要帮助为每一行计算该概率,并为我的数据帧创建一个新列df$b
。
有什么想法吗?
答案 0 :(得分:1)
带有data.table:
library(data.table)
setDT(df)
df[ , numer := .N, by=.(s1, s2, s3, s4, s5, s6, action)]
df[ , denom := .N, by=.(s1, s2, s3, s4, s5, s6)]
df[ , b:= numer/denom]