在R中的data.table中添加条件概率

问题描述

我有一个泰坦尼克号数据集,我想根据3个条件找到存活的概率。下表给出了概率。

library(PASWR2)
tab = with(TITANIC3,ftable(fare = fare > 200,pclass,sex,survived)) %>% prop.table(1) %>% round(3) * 100
tab

是否有一种简单的方法可以将tab表中的概率作为新列添加到TITANIC3数据集中?

谢谢!

解决方法

这可以通过使用软件包data.table来实现。 对象TITANIC3是类data.frame的对象。首先,您需要将其转换为类data.table。使用data.table时,可以直接在一行中基于聚合和分组子句定义新列。 只需运行下面的代码。

具有条件生存概率的新列为survival_prob。 我总是建议使用data.table,因为这是处理R中数据的最快方法。但是,如果要使用data.frame进行分析,只需使用命令setDF(titanic3)来转换。对象返回到类data.frame

library(PASWR2)
library(magrittr)
library(data.table)

# convert dataset from data frame to data table 
titanic3 <- copy(TITANIC3)
setDT(titanic3)

# define new column survival_prob using by-option
titanic3[,survival_prob := round(100*mean(survived),1),by = .(fare > 200,pclass,sex)]